본문으로 바로가기

클래스 속성 사용하기

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