여기에서 무슨 일이 일어나고 있는지 이해하는 데 어려움이 있습니다.__new__의 arg를 변경하면 __init__로 넘어 가지 않습니다.
class Test(object):
def __new__(cls, arg):
return object.__new__(cls, 345)
def __init__(self, arg):
self.arg = arg
test = Test('testing')
print
print '****', test.arg
이 작은 예제는 내가 가지고있는 혼란을 요약합니다. 새 함수 내에서 클래스를 만들 때 "테스트"문자열 대신 345 정수를 전달합니다. 그러나 나중에 arg를 검사 할 때 여전히 "테스트"문자열입니다.
class inch(float):
"Convert from inch to meter"
def __new__(cls, arg=0.0):
return float.__new__(cls, arg*0.0254)
print inch(12)
누군가가 차이가 여기에 무엇인지 설명 할 수 : 동시에
, 파이썬 문서에서이 예제는 작동합니까? 내가 찾고있는 기능을 사용할 수있는 방법이 있습니까?
불변 형 또는 그와 유사한 것을 서브 클래 싱하는 경우에만이 기술을 사용하면됩니다. 그렇지 않다면,'__init__'을 사용하십시오. – Basic