python - 为什么这段代码在没有 __init__ 方法的情况下将参数传递给构造函数?

标签 python

所以,我正在在线阅读一些代码,我遇到了以下类定义,我有点困惑;

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 更改添加了获取哈希的方法,而其余功能与 OrderedDictdict 相同。

关于python - 为什么这段代码在没有 __init__ 方法的情况下将参数传递给构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38704718/

相关文章:

python - pylab 导入状态?

python - 子进程并在 Python 脚本中使用另一个 python 脚本的输出文件

python - 我应该在哪里对对象和字段进行 Django 验证?

python - 如何在 Jetson Xavier 上的 Numba 中使用 OpenCV?

python - 运行带有 pm2 错误的 python 脚本

Python "setup.py develop"为什么我的数据包不可用?

python - xlrd 和引用的单元格(如何获取单元格缓存值?)

python - 如何使用 Pandas 列表中的值随机替换列中的值?

python - 如何用Python计算 Assets 的风险贡献

python - 如何使用python给文本添加标点符号?