所以,我正在在线阅读一些代码,我遇到了以下类定义,我有点困惑;
class MyClass(OrderedDict):
def __hash__(self):
return hash(tuple(self.iteritems()))
代码的其他地方有以下行;
MyClass(my_OD)
其中 my_OD
是有序字典。我的问题是,当没有 __init__
方法时,如何向此类传递参数?这个变量在类中的什么地方赋值?我来自 Java,我相当确定在 Java 中你不能将参数传递给没有构造函数的类,所以这种行为对我来说很陌生。
最佳答案
MyClass
类继承自OrderedDict
:
class MyClass(OrderedDict):
由于 MyClass
没有指定 __init__
方法,它调用 OrderedDict 类的 init 方法。因此构造函数的 my_OD
参数被传递给 OrderedDict。顺便说一句,__init__
在技术上不是构造函数。
这个 MyClass
的目的是成为一个 OrderedDict,它以不同于 OrderedDict 的方式计算其实例的 hash
。具体来说,OrderedDict
没有 __hash__
,它是在 dict
上定义的,在这种情况下,哈希定义为 None
- 所以字典是不可散列的。 MyClass
更改添加了获取哈希的方法,而其余功能与 OrderedDict
和 dict
相同。
关于python - 为什么这段代码在没有 __init__ 方法的情况下将参数传递给构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704718/