super()和super.调用的区别
时间: 2024-06-14 07:09:15 浏览: 12
在Python中,super()和super.都是用于调用父类的方法或属性的关键字。它们的区别在于使用方式和调用的对象。
1. super()函数:
super()函数是用于调用父类的方法。它可以在子类中调用父类的方法,而无需显式地指定父类的名称。super()函数通常在子类的方法中使用,通过super()函数可以调用父类的同名方法,并且可以传递参数给父类方法。例如:
```python
class Parent:
def __init__(self, name):
self.name = name
def say_hello(self):
print("Hello, " + self.name)
class Child(Parent):
def __init__(self, name, age):
super().__init__(name) # 调用父类的初始化方法
self.age = age
def say_hello(self):
super().say_hello() # 调用父类的say_hello方法
print("I am " + str(self.age) + " years old")
child = Child("Alice", 10)
child.say_hello()
```
输出结果为:
```
Hello, Alice
I am 10 years old
```
2. super.属性:
super.属性是用于访问父类的属性。它可以在子类中访问父类的属性,而无需显式地指定父类的名称。例如:
```python
class Parent:
def __init__(self, name):
self.name = name
class Child(Parent):
def __init__(self, name, age):
super().__init__(name)
self.age = age
child = Child("Alice", 10)
print(child.name) # 访问父类的属性
```
输出结果为:
```
Alice
```
总结:
super()函数用于调用父类的方法,而super.属性用于访问父类的属性。它们的共同点是都可以在子类中使用,而无需显式地指定父类的名称。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)