불변 유형이 무엇인지 혼란 스럽습니다. 필자의 float
책에서 이러한 유형의 예제를 사용 하면 객체가 변경 불가능한 것으로 간주됩니다.
class RoundFloat(float):
def __new__(cls, val):
return float.__new__(cls, round(val, 2))
이것은 클래스 구조 / 계층 때문에 불변으로 간주됩니까?, 의미 float
는 클래스의 최상위에 있으며 자체 메서드 호출입니다. 이 유형의 예제와 비슷합니다 (내 책 dict
이 변경 가능 하다고 말하더라도 ).
class SortedKeyDict(dict):
def __new__(cls, val):
return dict.__new__(cls, val.clear())
변경 가능한 것은 클래스 내부에 메소드가 있지만이 유형의 예제는 다음과 같습니다.
class SortedKeyDict_a(dict):
def example(self):
return self.keys()
또한 마지막 class(SortedKeyDict_a)
유형에 대해이 유형의 세트를 전달하면 :
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
example
메소드 를 호출하지 않고 사전을 리턴합니다. SortedKeyDict
와 __new__
오류로 플래그를. RoundFloat
클래스에 정수를 전달하려고 시도했지만 __new__
오류가 표시되지 않았습니다.