所以,我正在网上阅读一些代码,我遇到了以下类定义,我有点困惑;
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
- 所以 dicts 是不可散列的。 MyClass
更改增加了获取哈希的方法,而其余功能与 OrderedDict
和 dict
相同。关于python - 当没有 __init__ 方法时,为什么此代码将参数传递给构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38704718/