【问题标题】:why we use braces built-in-class.__init__([])为什么我们使用大括号内置类.__init__([])
【发布时间】:2019-08-28 19:24:37
【问题描述】:

我是 python 编程的新手。 我正在阅读内置类的继承,我看到了这样的代码。

class Anotherlist(list):
    def __init__(self, a_name):
        list.__init__([])
        self.name = a_name

所以我的问题是括号内括号的作用是什么?

list.__init__([])

【问题讨论】:

  • 这是一个空列表,作为参数传递给 list.__init__ 函数。
  • 这是一个空的list对象,即[]。这完全没有意义,它应该通过self,所以list.__init__(self)
  • 也应该是super.__init__
  • 我们是谁?你是从那里复制代码的吗?

标签: python list oop inheritance super


【解决方案1】:

list.__init__([]) 行没有任何用处。

很可能,它应该是super().__init__(),这对于构建“协作多重继承”很有用。见"Python's super() consider super"

对于日常编程,可以完全省略该行,因为带有空参数的 list.__init__ 只会清除列表。

【讨论】:

  • 好吧,list.__init__ 是一个空列表,如果你在一个空列表上调用它,没有额外的参数。 list.__init__ 将清除所有现有内容,如果您将另一个可迭代对象传递给它,它将将该可迭代对象的元素添加到列表中,但这些都不重要。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多