python 方法重写
时间: 2023-08-16 15:15:49 浏览: 163
方法重写(Method Overriding)是面向对象编程中的一个概念,它允许子类重新定义父类中已有的方法。当子类拥有与父类同名的方法时,子类对象调用该方法时将执行子类中的方法而不是父类中的方法。
在 Python 中,方法重写可以通过在子类中定义与父类同名的方法来实现。当子类对象调用该方法时,Python 解释器会优先执行子类中的方法。如果子类中没有定义与父类同名的方法,那么子类对象将调用继承自父类的方法。
下面是一个简单的示例代码:
```python
class Parent:
def my_method(self):
print("Parent's method")
class Child(Parent):
def my_method(self):
print("Child's method")
obj = Child()
obj.my_method() # 输出:Child's method
```
在上面的示例中,`Parent` 类定义了一个名为 `my_method` 的方法,而 `Child` 类继承了 `Parent` 类并重写了 `my_method` 方法。当 `Child` 类的对象 `obj` 调用 `my_method` 方法时,将执行子类 `Child` 中的方法,输出结果为 "Child's method"。
需要注意的是,子类重写父类方法时,方法的签名(即参数列表)必须保持一致。否则,Python 将认为子类定义了一个新的方法而不是对父类方法的重写。
相关问题
Python方法重写
以下是Python方法重写的几种方法:
1. 在子类中重新定义和父类同名的方法
```python
class ParentClass:
def override_method(self):
print("This is the parent class method")
class ChildClass(ParentClass):
def override_method(self):
print("This is the child class method")
child = ChildClass()
child.override_method() # 输出:This is the child class method
```
2. 在子类代码中,使用super().方法名()调用父类中的功能
```python
class ParentClass:
def override_method(self):
print("This is the parent class method")
class ChildClass(ParentClass):
def override_method(self):
super().override_method()
print("This is the additional functionality in the child class method")
child = ChildClass()
child.override_method() # 输出:This is the parent class method This is the additional functionality in the child class method
```
3. 书写新的功能
```python
class ParentClass:
def override_method(self):
print("This is the parent class method")
class ChildClass(ParentClass):
def new_method(self):
print("This is a new method in the child class")
child = ChildClass()
child.override_method() # 输出:This is the parent class method
child.new_method() # 输出:This is a new method in the child class
```
python方法重写
Python中的方法重写是指在子类中重新定义父类中已经存在的方法。通过重写方法,子类可以对继承自父类的方法进行定制化修改,以满足子类自身的特殊需求。
要重写一个方法,子类需要定义与父类中方法名相同的方法,并在该方法中实现自己的逻辑。在调用该方法时,Python会先在子类中查找是否有该方法的定义,如果有则执行子类的方法,而不会调用父类中的同名方法。
下面是一个简单的示例:
```
class Animal:
def sound(self):
print("Animal makes a sound.")
class Dog(Animal):
def sound(self):
print("Dog barks.")
animal = Animal()
animal.sound() # 输出: Animal makes a sound.
dog = Dog()
dog.sound() # 输出: Dog barks.
```
在上面的例子中,父类`Animal`定义了一个`sound`方法,子类`Dog`重写了该方法并给出了不同的实现。当我们分别创建`Animal`和`Dog`对象并调用`sound`方法时,输出结果分别是父类和子类中定义的内容。
这就是Python中的方法重写。注意,在子类中重写方法时,可以使用`super()`函数调用父类中的同名方法,以便在子类中保留父类方法的功能。
阅读全文