当前位置: 首页 > 面试题库 >

“ super”在Python中做什么?

曾云
2023-03-14
问题内容

之间有什么区别:

class Child(SomeBaseClass):
    def __init__(self):
        super(Child, self).__init__()
和:

class Child(SomeBaseClass):
    def __init__(self):
        SomeBaseClass.__init__(self)

我看到super在只有单一继承的类中经常使用它。我知道为什么你会在多重继承中使用它,但是不清楚在这种情况下使用它的好处。


问题答案:

super()单继承的好处是微不足道的-大多数情况下,你不必将基类的名称硬编码到每个使用其父方法的方法中。

但是,如果不使用,几乎不可能使用多重继承super()。这包括常见的惯用语,例如mixin,接口,抽象类等。这扩展到了以后扩展你的代码的代码。如果以后有人想编写一个扩展了的类Child和一个mixin,他们的代码将无法正常工作。



 类似资料:
  • 问题内容: Google不允许我进行搜索,因此我在查找相关文档时遇到了麻烦。有人知道吗 问题答案: 在成对的对象之间执行 就地 +操作。尤其是: 集合:联合操作 dicts:更新操作 计数器:(多集)联合运算 数字:按位或,二进制运算 在大多数情况下,它与操作员有关。请参阅下面的示例。 套装 例如,两个分配的集合的并并共享以下等效表达式: 其中的最终值等于: 分配的OR操作 就地或运算 通过特殊方

  • 问题内容: 我看到了一个将函数应用于元组的代码示例。结果,它返回一个负整数。我想知道这个功能做什么?Google没有帮助。我找到了一个页面,该页面解释了哈希的计算方式,但没有解释为什么我们需要此函数。 问题答案: 哈希是一个固定大小的整数,用于标识特定值。每个值都需要有自己的哈希,因此对于相同的值,即使不是同一对象,您也将获得相同的哈希。 散列值的创建方式应使结果值均匀分布,以减少所得到的散列冲突

  • 问题内容: 我试图了解何时以及如何在Python中正确使用super()(2.7.x或3.x) 在翻译告诉我怎么称呼它: 我了解在Python3.x中现在可以在类定义中使用super(),但是我不明白为什么不可能。或在类定义中。 我知道一定有原因,但是我找不到。对我来说,这些行等于或,并且行得通吗? 我认为即使在Python 3.x中,键入也是一个不错的快捷方式。 问题答案: 仅在Python 2

  • 问题内容: 我在这里碰到了这个,总是这样使用: 什么是运营商做的,为什么不使用普通的或? 抱歉,如果以前没有回答,搜索引擎将不喜欢标点符号。 问题答案: http://docs.python.org/reference/expressions.html#notin说: [操作员]和是等效的;为了与C保持一致,是首选。[…]拼写被认为是过时的。

  • 问题内容: 首先,我想澄清一个问题:它是关于函数的, 而不是 列表的片段或类似的字符串。 文档提到该函数在NumPy中使用,并且没有给出用法示例(说了 如何使用它, 但没有说 何时使用它 )。而且,我 从未 见过在任何Python程序中使用过此函数。 在以纯Python(无NumPy或SciPy)编程时,何时应使用该函数?任何示例将不胜感激。 问题答案: 给出与相同的结果。一个的优点对象是,它可以

  • 问题内容: 我知道构造函数会创建一个新列表,但是它的特征到底是什么? 打电话时会怎样? 打电话时会怎样? 打电话时会怎样? 据我所知,调用构造函数会删除最外面的花括号(元组或列表),并将其替换为。这是真的?还有什么其他细微差别? 问题答案: 将传递给它的iterable转换为列表。如果itertable已经是一个列表,则返回 浅表副本 ,即仅最外层的容器是新的,其余对象仍然相同。