python:重写父类的方法

对于父类的方法,子类如果认为不符合它的要求,就可以进行重写。为此,可在子类中定义一个与要重写的父类同名的方法。这样,在子类实例中调用重写的方法时,调用的是子类中定义的方法。

在下面的示例中,子类PetDog重写了父类Animal的方法get_description():

class Animal:
    """动物类"""

    def __init__(self, name, age):
        """初始化描述动物的属性"""
        self.name = name
        self.age = age
    
    def get_description(self):
        """构造描述信息"""
        full_description = f"{self.name.title()}'s age is {self.age}."
        return full_description


class PetDog(Animal):
    """宠物狗"""

    def __init__(self, name, age):
        """初始化父类的属性。
        再初始化宠物狗特有的属性
        """
        super().__init__(name, age)
        self.owner = "thb"

    def get_description(self):
        """构造描述信息"""
        full_description = f"The owner is {self.owner}."
        return full_description

# 创建一个宠物狗的实例
pet_dog = PetDog('Shiwu', 3)
print(pet_dog.get_description())

运行输出:
在这里插入图片描述

Python中,重写(Override)父类方法允许子类提供特定于自身的实现,并覆盖了其基础类的行为。这是面向对象编程(OOP)的重要特性之一,有助于代码复用及提高程序灵活性。 ### 语法: 当您需要在子类中重写父类方法时,只需在子类中定义一个新的函数,其名称、返回值类型和参数列表应完全匹配父类中的相应方法。这确保了函数的同名、同类型和同参数数量。 例如: ```python class ParentClass: def display(self): print("This is the parent class method") class ChildClass(ParentClass): def display(self): # 这里重写父类的display方法 print("This is the child class method") ``` 在这个例子中,`ChildClass`继承自`ParentClass`并重写了`display`方法。 ### 参数处理: 在重写父类方法时,您可以修改对原始参数的处理逻辑或增加新的功能。参数可以保持不变、改变数量或添加默认值等。 ### 示例: ```python class ParentClass: def process_data(self, data): return "Processed data by ParentClass" class ChildClass(ParentClass): def process_data(self, data): result = super().process_data(data) + " - Additional processing" return result obj = ChildClass() print(obj.process_data('Sample Data')) # 输出:"Processed data by ParentClass - Additional processing" ``` 这里,`ChildClass`不仅重写了`process_data`方法,而且还在返回结果前进行了额外的操作。 ### 使用场景: - 当您希望子类基于父类的基本实现上做出一些定制化操作时。 - 父类方法不够适用于所有子类,需要针对特定需求提供更精确的实现时。 - 提高代码的复用性和可维护性,减少重复代码量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值