【发布时间】:2021-06-02 15:00:11
【问题描述】:
我对@987654322@ 方法有疑问。根据 W3SCHOOLS 的定义和用法(super)是:
-
super()函数用于授予对父类或兄弟类的方法和属性的访问权限。 -
super()函数返回一个代表父类的对象。
但是我真的不明白为什么以及在哪里可以使用super().__init__() 方法而不使用__init__ 中的任何参数(因为即使没有super,父类的__init__ 方法也会被调用我们在括号中插入父类的名称)。
我是面向对象编程的新手,所以我只是想了解它是如何工作的!!!
为了帮助您理解我的问题,请参见下面的示例:
class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
def area1(self):
return self.length * self.width
class Square(Rectangle):
def __init__(self, length):
super().__init__(length, length)
square = Square(4)
square.area()
这里我们使用它是因为我们需要在 Rectangle 类上定义self.length, self.width
(我们插入长度,长度)。
但是我不知道为什么我们在没有任何参数的情况下使用它,就像下一个示例一样。
因为我知道我们可以访问父类的方法和属性,而无需调用父类。
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.lineEntry = QLineEdit(self)
self.lineEntry.move(16,16)
self.lineEntry.resize(200,40)
self.setGeometry(50,50,320,200)
self.setWindowTitle("QLineEdit Example")
self.show()
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
【问题讨论】:
-
如果父类的
__init__()方法需要参数,则需要传递参数。这与调用任何其他函数或方法没有什么不同。 -
“根据 W3SCHOOLS”只是提醒一下,这并不是最好的资源。一般最好参考the official docs