我在试着理解super()的用法.从外观上看,两个子类都可以创建,很好.

我很想知道下面两个子元素班之间的实际区别.

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA() 
ChildB()

推荐答案

super()可以避免显式引用基类,这很好.但主要的优势在于多重继承,可以实现各种各样的fun stuff.如果你还没有看过standard docs on super.

请注意,the syntax changed in Python 3.0:您可以只说super().__init__()而不是super(ChildB, self).__init__(),而IMO要好得多.标准文档还提到了guide to using super(),这很有说明性.

Python相关问答推荐

Class_weight参数不影响RandomForestClassifier不平衡数据集中的结果

Python 3.12中的通用[T]类方法隐式类型检索

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

Matlab中是否有Python的f-字符串等效物

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

使用索引列表列表对列进行切片并获取行方向的向量长度

将图像拖到另一个图像

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

如何在turtle中不使用write()来绘制填充字母(例如OEG)

让函数调用方程

在单次扫描中创建列表

如何使用两个关键函数来排序一个多索引框架?

如何创建引用列表并分配值的Systemrame列

并行编程:同步进程

计算机找不到已安装的库'

上传文件并使用Panda打开时的Flask 问题

具有不匹配列的2D到3D广播

如何在Django查询集中生成带有值列表的带注释的字段?

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?