我搞不懂什么是不可变类型。我知道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)
,如果我将此类型的set传递给它:
d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2))
在不调用example
方法的情况下,它返回一个字典。带有__new__
的SortedKeyDict
将其标记为错误。我尝试使用__new__
将整数传递给RoundFloat
类,但没有标记出任何错误。
https://stackoverflow.com/questions/8056130
复制相似问题