所以,我在网上读了一些代码,遇到了下面的类定义,我有点困惑
class MyClass(OrderedDict):
def __hash__(self):
return hash(tuple(self.iteritems()))
在代码的其他地方有下面一行
MyClass(my_OD)
其中my_OD
是有序字典。我的问题是,当没有__init__
方法时,如何将参数传递给这个类?这个变量在类中的什么位置赋值?我来自Java,我非常确定在Java中,如果没有构造函数,就不能将参数传递给类,所以这种行为对我来说是陌生的。你知道吗
Tags:
类
MyClass
从OrderedDict
继承:因为
MyClass
没有指定__init__
方法,所以它调用OrderedDict类的init方法。因此,构造函数的my_OD
参数被传递给orderedict。顺便说一句,__init__
在技术上不是构造函数。你知道吗这个
MyClass
的目的是成为一个orderedict,它以与orderedict不同的方式计算实例的hash
。具体来说,OrderedDict
没有定义在dict
上的__hash__
,在这种情况下,散列被定义为None
,因此dict是不可散列的。MyClass
更改添加了获取哈希的方法,而其余的功能是相同的OrderedDict
和dict
相关问题 更多 >
编程相关推荐