클래스 속성 사용하기
class 클래스이름:
속성 = 값
: 클래스 속성은 클래스에 속해 있으며 모든 인스턴스에서 공유함
: self는 현재 인스턴스를 뜻하므로 클래스 속성을 지칭하기에는 조금 모호함
: 그래서 클래스 속성에 접근할 때는 클래스 이름으로 접근하면 코드가 좀 더 명확해짐
클래스.속성
: 클래스 밖에서도 클래스 이름으로 속성에 접근하면 됨
속성, 메서드 이름을 찾는 순서
: 파이썬에서는 속성, 메서드 이름을 찾을 때 인스턴스, 클래스 순으로 찾음
: 그래서 인스턴스 속성이 없으면 클래스 속성을 찾게됨
: 인스턴스와 클래스에서 __dict__ 속성을 출력해보면 현재 인스턴스와 클래스의 속성을 딕셔너리로 확인 할 수 있음
인스턴스.__dict__
클래스.__dict__
인스턴스 속성 사용하기
: 인스턴스 속성은 인스턴스별로 독립되어 있으면 서로 영향을 주지 않음
클래스 속성
: 모든 인스턴스가 공유. 인스턴스 전체가 사용해야 하는 값을 저장할 때 사용
인스턴스 속성
: 인스턴스 별로 독립되어 있음. 각 인스턴스가 값을 따로 저장해야 할 때 사용
비공개 클래스 속성 사용하기
: 클래스 속성을 만들 때 __속성과 같이 __(밑 줄 두 개)로 시작하면 비공개 속성이 됨
: 클래스 안에서만 접근할 수 있고, 클래스 바깥에서는 접근할 수 없음
class 클래스이름:
__속성 = 값
클래스와 메서드의 독스트링 사용하기
: 함수와 마찬가지로 클래스와 메서드에서도 독스트링을 사용할 수 있음
: 클래스와 메서드를 만들 때 :(콜론) 바로 다음 줄에 따옴표 세 개로 문자열을 입력하면 됨
: 클래스의 독스트링은 클래스.__doc__형식으로 사용
: 메서드의 독스트링은 클래스.메서드.__doc__형식 또는 인스턴스.메서드.__doc__형식으로 사용
클래스.__doc__ # 클래스 독스트링
클래스.메서드.__doc__ # 메서드 독스트링
인스턴스.메서드.__doc__ # 메서드 독스트링
정적 메서드 사용하기
: 메서드 위에 @staticmethod를 붙임
: 정적 메서드는 매개변수에 self를 지정하지 않음
: 메서드의 실행이 외부 상태에 영향을 끼치지 않는 순수 함수(pure function)를 만들 때 사용
: 순수 함수는 부수 효과(side effect)가 없고, 입력 값이 같으면 언제나 같은 출력 값을 반환함
: 정적 메서드는 인스턴스의 상태를 변화시키지 않는 메서드를 만들 때 사용함
class 클래스이름:
@staticmethod
def 메서드(매개변수):
코드
: 정적 메서드 호출
클래스.메서드()
클래스 메서드 사용하기
: 메서드 위에 @classmethod를 붙임
: 클래스 메서드의 첫 번째 매개변수는 cls를 지정해야 함
: 정적 메서드처럼 인스턴스 없이 호출할 수 있다는 점은 같다
: 하지만 클래스 메서드는 메서드 안에서 클래스 속성, 클래스 메서드에 접근해야 할 때 사용
class 클래스이름:
@classmethod
def 메서드(cls, 매개변수):
코드
'Python > python' 카테고리의 다른 글
예외 처리 사용하기 (0) | 2020.10.20 |
---|---|
클래스 상속 사용하기 (0) | 2020.10.19 |
클래스 (0) | 2020.10.19 |
클로저 사용하기 (0) | 2020.10.19 |
람다 표현식 사용하기 (0) | 2020.10.19 |