티스토리 뷰
9.4. 기타 주의사항들
-
데이터 어트리뷰트는 같은 이름의 메소드 어트리뷰트를 덮어쓴다.
-
명명법
- 메소드 이름은 대문자로 시작
- 데이터 어트리뷰트는 언더스코어(_) 하나를 붙인다.
- 메소드에는 동사를 쓴다.
- 데이터 어트리뷰트에는 명사를 쓴다.
-
함수 객체를 클래스의 지역 변수로 대입하는 것 역시 가능하다.
# Function defined outside the class def f1(self, x, y): return min(x, x + y) class C: f = f1 def g(self): return 'hello world' h = g
-
f, g, h
는 모두 함수 객체를 가리키는 클래스C
의 어트리뷰트이고, 결과적으로는 이것들 모두C
의 인스턴스의 메소드이다.
9.5. 상속
-
상속은 아래와 같이 생겼다.
class DerivedClassName(BaseClassName): # statement-1 # . # . # . # statement-N
-
BaseClassName
자리에 다른 모듈에서 가져온 클래스를 쓸 수도 있다.class DerivedClassName(modename.BaseClassName):
- 파생 클래스는 베이스 클래스의 메소드들을 재정의할 수 있다.
- 메소드가, 같은 객체의 다른 메소드를 호출할 때 특별한 권한이 필요하지 않다.(모든 메소드는 실질적으로 C++의
virtual
과 같다.) - 파이썬에는 상속과 함께 쓸 수 있는 두 개의 내장 함수가 있다.
- 인스턴스의 형을 검사하려면
isinstance()
를 사용한다.isinstance(obj, int)
는obj.__class__
가 int거나 int에서 파생된 클래스인 경우에만True
를 리턴한다. - 클래스 상속을 검사하려면
issubclass()
를 사용한다.issubclass(bool, int)
는True
인데,bool
이int
의 서브 클래스이기 때문이다. 하지만issubclass(float, int)
는False
인데,float
은int
의 서브 클래스가 아니기 때문이다.
- 인스턴스의 형을 검사하려면
9.5.1. 다중 상속
-
파이썬은 다음과 같이 다중 상속도 지원한다.
class DerivedClassName(Base1, Base2, Base3): pass
9.6. 비공개 변수
-
객체 내부에서만 액세스할 수 있는 "비공개" 인스턴스 변수는 파이썬에 존재하지 않는다.
-
하지만 대부분의 파이썬 코드에서 따르고 있는 규약이 있다. : 밑줄로 시작하는 이름은 (예를 들어,
_spam
) API의 공개적이지 않은 부분으로 취급되어야 한다. (하지만 접근하려면 쉽게 접근 가능) -
두 개의 언더스코어를 사용할 경우 비공개처름 보여지기 위해 이름 뒤섞기(name mangling)이라고 불려지는 매커니즘에 의해서 이름이 뒤섞기게 된다.
- 비공개처럼 취급하고 싶지만 굳이 접근 하자고 한다면, 해당 어트리뷰트의 이름은 외부에서 접근할 때
_classname__attribute
로 치환된다.
- 비공개처럼 취급하고 싶지만 굳이 접근 하자고 한다면, 해당 어트리뷰트의 이름은 외부에서 접근할 때
-
x
라는 클래스 어트리뷰트 중_a
와__b
라는 변수가 존재한다고 가정할 때,_a
는x._a
로 손 쉽게 접근이 가능하다.__b
변수에 접근할 때에는 이름 뒤섞기 매커니즘에 의해x.__b
라는 커맨드로 접근이 불가능하고,x._x__b
라는 커멘드로 접근이 가능하다.
Reference: 파이썬 자습서
'컴퓨터공학 > 파이썬' 카테고리의 다른 글
파이썬 자습서 10장. 표준 라이브러리 둘러보기 (1) (0) | 2019.07.27 |
---|---|
파이썬 자습서 9장. 클래스 (4) (0) | 2019.07.27 |
파이썬 자습서 9장. 클래스 (2) (0) | 2019.07.22 |
파이썬 자습서 9장. 클래스(1) (0) | 2019.07.22 |
파이썬 자습서 8장. 에러와 예외 (0) | 2019.07.18 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Else
- Machine Learning
- 튜플
- HACKDAY
- 삼항연산자
- 네이버 인턴
- import
- 파이선
- random
- 네이버
- Break
- 리스트
- 핵데이
- ML
- 변수
- sys
- stitcher
- 디폴트 파라미터
- ImageStitching
- continue
- python
- 머신러닝
- 고급 파이썬
- 클래스
- 딕셔너리
- DateTime
- Math
- 파이썬
- list
- 모듈
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함