那super里面有参数与没参数的区别
时间: 2023-09-27 10:07:10 浏览: 87
super()函数有两种常见的调用方式:带参数和不带参数。
当我们在子类中覆盖父类的方法时,如果想要在子类中调用父类的方法,可以使用带参数的super()函数,以便传递相应的参数给父类的方法。例如:
```
class Parent:
def method1(self, arg1):
print("Parent's method1:", arg1)
class Child(Parent):
def method1(self, arg1):
super().method1(arg1)
print("Child's method1:", arg1)
child = Child()
child.method1("Hello")
```
这个例子中,Child类覆盖了Parent类的method1()方法,并使用super()函数来调用父类的method1()方法,并传递了参数arg1。在这种情况下,使用带参数的super()函数可以确保传递正确的参数给父类的方法。
另一方面,当我们在子类中添加新的方法或属性,而不是覆盖父类的方法或属性时,可以使用不带参数的super()函数。例如:
```
class Parent:
def method1(self):
print("Parent's method1")
class Child(Parent):
def method2(self):
super().method1()
print("Child's method2")
child = Child()
child.method2()
```
在这个例子中,Child类添加了一个新的方法method2(),并使用不带参数的super()函数来调用父类的method1()方法,而不需要传递任何参数。在这种情况下,使用不带参数的super()函数可以简化代码,并避免出现不必要的参数传递。
阅读全文