"효과적인 파이썬"노트 - 제 4 장 위안 클래스와 특성

(A)는, 상기 속성 세트하세요 방법 치환

다음과 같이 기존의 GET 및 설정 방법은 다음과 같습니다

클래스 OldResistor () :
     데프  __init__ (자기, 옴) : 
        자기. __ohms = 

    데프 get_ohms (자기) :
         반환 자기. __ohms는 

    데프 : set_ohms (자기, 옴) 
        자체. __ohms = 


경우  __name__ == ' __main__ ' : 
    R0 = OldResistor (50e3 )
     인쇄 (r0.get_ohms ()) 
    r0.set_ohms ( 10e3 )
     인쇄 (r0.get_ohms ())

@property 데코레이터 게터와 setter 메소드 일

클래스 저항기 () :
     DEF  __init__ (자기 옴) 
        self.ohms = 
        self.voltage = 0 
        self.current = 0 


클래스 VolResistor (저항기)
     DEF  __init__ (자기 옴) 
        . 슈퍼 () __init__ (옴)   #는 상위 클래스 변수를 상속 
        셀프. __vol = 100 개   # 시작 __ 변수 내부 변수 밖에 참조 할 수 없기 때문에 

    @Property의    # 게터 세트 전압 특성 
    DEF의 전압 (자기)
         리턴 . 셀프 __vol

    voltage.setter @ 
    DEF 전압 (자기 전압) 
        . 자기 __vol = 전압 
        self.current = 셀프. __vol / self.ohms 


IF  __name__ == ' __main__ ' : 
    R1 = 저항기 (50e3 ) 
    r1.ohms = 10e3   # Public 속성 
    = + 5E3 r1.ohms 인쇄 (r1.ohms) 
    R2 = VolResistor (10 )
     전단 (r2.voltage)    #의 게터 속성, 전압 설정 메소드를 수행하지 않는 속성이 현재 업데이트되지 인쇄
    

     (r2.current)를
    이 r2.voltage = 100     # 때 전압 특성 할당 전압 세터 방법을 수행되며, 현재 업데이트 속성 
    인쇄 (r2.current)

 

둘째, 대신 @property 속성을 재구성 고려

패스

@property를 복용 셋째, 기술자가 다시 작성해야하는 방법

__get__ 
__set__

네, __ getattr __, __의 getAttribute __, __ 않은 setattr __- 수요 창출 속성

패스

다섯, 元类

__새로운__

패스

추천

출처www.cnblogs.com/maxgongzuo/p/12002701.html