StaticMethod를 정적 메서드와 클래스 메소드 classmethod
첫째, 클래스 메서드 classmethod
- 상기 방법은 클래스의 메소드가되고,이 방법은 직접 개체 중 하나에 의존 클래스를 호출하지 않아도 사용할 수 있고, 즉, 제조 될 수있는 몇 가지의 변화를 초기화하지 않아도
- 작동이 방법은 정적 속성을 포함 할 경우, 당신은 classmethod을 장식하는이 방법을 사용한다
클래스 제품 : __discount = 0.8 # 정적 개인 속성이 DEF __init__ (자기, 이름, 가격) : self.name = 이름 . 자기 __price = 가격 #의 가격 민영화 @Property의 # 가격 속성 위장 방법, 클래스 외부 직접 통화 기능, 일부 작업은 개인 특성을 수행 DEF 가격 (자체). # 매개 변수를 전달하지 않습니다 반환 . 자기를 __price * 물품. __discount @classmethod # 방법을 수업 방법으로,이 방법보다는, 외부 클래스 기반에서 직접 호출 할 수 있습니다 우리는 인스턴스화 할 수없는 모든 객체에 의존 할 필요가 DEF의 change_discount (CLS, NEW_DISCOUNT) : #은 할인을 수정 CLS. __discount = NEW_DISCOUNT 사과 = 제품 ( ' 사과 ' , 5) #의 예 인쇄 (apple.price) Goods.change_discount ( 0.5) # 여기에 직접 제품 범주를 호출하는 데 사용할 수 있습니다, 당신이 사과에 의존 호출 할 필요는 없습니다 인쇄 (사과. 가격)
결과 :
4.0 2.5
둘째, 정적 메소드 staticmetho
- 완전히 객체 지향의 관계가 중요하지 않습니다 또한 두 객체와 클래스의 함수가 아니며 경우, 프로그래밍, 다음이 될 것이다이 기능의 StaticMethod를를 사용하는 정적 메서드에서
클래스 : 로그인이 DEF __init__ (자체, 이름, 암호) : self.name는 = 이름 self.pwd는 = 암호가 DEF 로그인 (자기가) : 패스 @staticmethod는 DEF ) (get_usr_pwd : #은 여기에 매개 변수를 전달할 수 있지만 특정 매개 변수, 일반적인 매개 변수 #은 원래 메소드와 클래스와 객체는 아무 상관이없는 기능,하지만 지금의 클래스 정적 메서드입니다 USR =의 INPUT ( ' 사용자 이름 : ' ) PWD =의 INPUT ( ' 비밀번호 : ' ) 로그인 (USR, PWD ) Login.get_usr_pwd () #은 정적 메소드 호출에 직접 클래스를 사용
III 요약
- , 클래스 메소드를 인스턴스화 할 수 없습니다 및 정적 방법은 관련 작업을 할 수있는 클래스에 의해 직접 호출된다
- 객체는 호출 클래스 이름을 사용하는 것이 일반적으로 권장 (클래스에 대한 포인터) 클래스 메소드와 정적 메소드를 호출 할 수 있지만,
- 클래스 메소드는 클래스 대신, 기본 매개 변수 CLS있다
- 정적 메소드는 함수처럼 매개 변수를 기본값으로하지 않습니다