【发布时间】:2021-11-18 19:56:51
【问题描述】:
我是 python 类的新手。我搜索并浏览了很多关于 super() 方法的文章,这造成了很多混乱。
类型 - 1
class Square():
def __init__(self,side):
self.side = side
print("Its confusing")
super().__init__()
def area(self):
return self.side * self.side
c = Square()
print(c.area())
在 Type - 1 中,如果我提到super().__init__() 有什么用呢?我不明白为什么我们在一个新创建的类中使用super().__init__(),它不是从任何其他类继承的。而且我不明白它在这里做了什么。
如果我们在分配self.side = side 之后给它,它会正常运行并被执行。
类型 - 2
class Square():
def __init__(self):
# self.side = side
# print("Its confusing")
super().__init__()
e = Square()
e()
如果我只在__init__ 内给出super().__init__(),它会给出错误。
TypeError: 'Square' object is not callable
我的疑问是:
1.我们可以在新创建的类中使用super().__init__() 吗?它运行良好,没有错误。
2.如果我只将super().__init__() 放在__init__ 中,为什么Type - 2 会抛出错误?
你能用简单的话说一下吗?
【问题讨论】:
-
继承自
object -
在你的文本中使用`super().init()`你的意思是super().__init__()?
-
"every" 类是
object的子类,尝试打印issubclass(Square, object)。通常它是多余的并省略它 -
您的
type-2代码只是一个错字。你有e()。当您的类不可调用时,为什么要故意导致错误? -
你应该看看answers这个问题。
super().__init__()在多重继承中非常有用。
标签: python inheritance single-inheritance