super()和object
时间: 2023-09-11 16:12:09 浏览: 48
`super()`和`object`都是Python中的内置函数或基类,它们在不同的场合下具有不同的作用。
`object`是Python中所有类的基类,它提供了一些内置方法,例如`__str__`、`__repr__`、`__hash__`等。如果一个类没有显式地继承其他类,则默认继承`object`类。`object`类的主要作用是提供一些基本的对象操作方法,例如比较、哈希和字符串表示等。
`super()`函数则是用于在子类中调用父类的方法,它提供了一种简洁而优雅的方式来实现方法的继承和重载。`super()`函数的作用是返回一个代理对象,该对象可以用于调用父类中的方法。通常情况下,我们使用`super()`函数来调用父类的构造函数、普通方法或静态方法。
以下是一个使用`super()`函数和`object`基类的示例代码:
```python
class Parent:
def __init__(self, name):
self.name = name
def print_name(self):
print(self.name)
class Child(Parent):
def __init__(self, name, age):
super().__init__(name)
self.age = age
def print_age(self):
print(self.age)
def __str__(self):
return f"{self.name} ({self.age} years old)"
c = Child("Tom", 10)
c.print_name()
c.print_age()
print(str(c))
```
在上面的代码中,我们定义了一个`Parent`类和一个`Child`类,`Child`类继承自`Parent`类。在`Child`类中,我们重载了`__str__`方法,并使用`super()`函数调用了父类中的`__init__`方法,以保留父类中的功能。当我们创建`Child`类的实例时,`__init__`方法会自动调用父类中的`__init__`方法,从而完成父类中的初始化工作。在`Child`类中,我们还定义了一个`__str__`方法,用于将对象转换为字符串表示。这里我们使用`super()`函数调用了`object`类中的`__str__`方法,以保留`object`类中的默认实现。最后,我们创建一个`Child`类的实例,并调用了它的方法和属性。