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

2024-04-19 13:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我在网上读了一些代码,遇到了下面的类定义,我有点困惑

class MyClass(OrderedDict):
    def __hash__(self):
        return hash(tuple(self.iteritems()))

在代码的其他地方有下面一行

MyClass(my_OD)

其中my_OD是有序字典。我的问题是,当没有__init__方法时,如何将参数传递给这个类?这个变量在类中的什么位置赋值?我来自Java,我非常确定在Java中,如果没有构造函数,就不能将参数传递给类,所以这种行为对我来说是陌生的。你知道吗


Tags: 代码selfreturn定义mydef地方myclass
1条回答
网友
1楼 · 发布于 2024-04-19 13:39:52

MyClassOrderedDict继承:

class MyClass(OrderedDict):

因为MyClass没有指定__init__方法,所以它调用OrderedDict类的init方法。因此,构造函数的my_OD参数被传递给orderedict。顺便说一句,__init__在技术上不是构造函数。你知道吗

这个MyClass的目的是成为一个orderedict,它以与orderedict不同的方式计算实例的hash。具体来说,OrderedDict没有定义在dict上的__hash__,在这种情况下,散列被定义为None,因此dict是不可散列的。MyClass更改添加了获取哈希的方法,而其余的功能是相同的OrderedDictdict

相关问题 更多 >