Python 마법 방법의 설명자 류 를 자세히 설명 합 니 다.

설명 클래스 요구 사항:
설명 자 는 특정한 유형의 인 스 턴 스 를 다른 종류의 속성 에 할당 하 는 것 입 니 다.
적어도 다음 과 같은 방법 을 실현 해 야 한다.

•__get__(self, instance, owner)
C      ,       

•__set__(self, instance, value)
C           ,       

•__delete__(self, instance)
C      ,       
eg:

>>> class MyDecriptor:
    def __get__(self,instance,owner):
        print("getting...",self,instance,owner)
    def __set__(self,instance,value):
        print("setting...",self,instance,value)
    def __delete__(self,instance):
        print("deleting...",self,instance)
>>> class Test:
    x = MyDecriptor()   # Mydecriptor       Test    x
테스트:
在这里插入图片描述
eg:

>>> class MyProperty:
    def __init__(self,fget = None,fset = None,fdel = None):
        self.fget = fget
        self.fset = fset
        self.fdel = fdel
    def __get__(self,instance,owner):
        return self.fget(instance)
    def __set__(self,instance,value):
        self.fset(instance,value)
    def __delete__(self,instance):
        self.fdel(instance)

        
>>> class C:
    def __init__(self):
        self._x = None
    def getX(self):
        return self._x
    def setX(self,value):
        self._x = value
    def delX(self):
        del self._x
    x = MyProperty(getX,setX,delX)

    
>>> c = C()
>>> c.x = "HELLOW"
>>> c.x
'HELLOW'
>>> c._x
'HELLOW'
>>> del c.x
>>> c._x
eg:
섭씨 도 전 화 씨 도:화 씨 도=섭씨 도*1.8+32
요청:
•온도 류 를 먼저 정의 한 다음 에 두 개의 설명자 류 를 섭씨 도와 화 씨 두 개의 속성 을 묘사 하 는 데 사용 하도록 정의 합 니 다.
•두 속성 이 자동 으로 바 뀌 도록 요구 합 니 다.즉,섭씨 도 라 는 속성 에 값 을 부여 한 다음 에 인쇄 된 화 씨 도 속성 은 자동 으로 바 뀐 결과 입 니 다.

ss Celsius:  #       
    def __init__(self,value = 26.0):#self       (         )   (  cel)
        self.value = float(value)
    def __get__(self,instance,owner):#instance                 (  temp)
        return self.value
    def __set__(self,instance,value):#owner                (     )
        self.value = float(value)

class Fahrenheit:   #       
    def __get__(self,instance,owner):
        return instance.cel * 1.8 +32  #       
    def __set__(self,instance,value):
        instance.cel = ((float)(value)- 32)/ 1.8 
        ## instance.cel     Temperature.cel,    Celsius   __set__  
        
class Temperature:   #   
    cel = Celsius()   #       (                 )
    fah = Fahrenheit()# temp.fah ,   fah      ,    Fahrenheit     __set__  
						
>>> temp = Temperature()
>>> temp.cel
26.0
>>> temp.fah
78.80000000000001
>>> temp.fah = 78.8
>>> temp.cel
25.999999999999996
파 이 썬 의 마법 방법 에 대한 설명자 류 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 설명자 류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기