Python:确保所有子类方法返回相同的内容

标签 python inheritance

在Python 3中,我将Animal类作为抽象基类,并使用抽象方法give_name(self)。派生类包括 DogCat

give_name() 方法的内容开头在不同的子类中可能不同。例如,在 Dog 子类中,可能有 print("bark"),而在 Cat 子类中,可能有 打印(“喵”)

但是,我想确保在所有派生类中,give_name()return self.__class__.__name__ 结尾。我怎样才能强制执行这个约束(尽可能优雅地)?

当前代码:

from abc import ABC, abstractmethod
class Animal(ABC):
    @abstractmethod
    def give_name(self):
        pass

class Dog(Animal):
    def give_name(self):
        print("bark")
        return self.__class__.__name__

class Cat(Animal):
    def give_name(self):
        print("meow")
        return self.__class__.__name__

最佳答案

您可以在父类(super class)中实现give_name(),但将打印部分委托(delegate)给子类,例如

from abc import ABC, abstractmethod

class Animal(ABC):
    def give_name(self):
        self.print()
        return self.__class__.__name__

    @abstractmethod
    def print(self):
        pass

class Dog(Animal):
    def print(self):
        print("bark")

class Cat(Animal):
    def print(self):
        print("meow")

关于Python:确保所有子类方法返回相同的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612447/

相关文章:

inheritance - 从不扩展 Application 的类的 Main 方法启动 JavaFX

python - 继承:获取__init__的属性

c++ - 我们可以覆盖继承类的纯虚函数吗?

python - 为存储在数据存储中的图像发送 "Cache-Control: public"时设置 “304 Not Modified” 是否可以

python - 将需求从 requirements.txt 添加到 conda meta.yaml

python - 如何在 Python 中的执行之间保留数据

python - 相关热图

Python Apache Beam 将字典列表转换为多个 PCollection 元素

python - 动态选择要继承的类

c++ - 类模板继承自不完整的类