StaticMethod를 정적 메서드와 클래스 메소드 classmethod

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있다
  • 정적 메소드는 함수처럼 매개 변수를 기본값으로하지 않습니다

 

추천

출처www.cnblogs.com/wxm422562/p/11086690.html