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
파 이 썬 의 마법 방법 에 대한 설명자 류 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 설명자 류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.