python - 基于多态性的函数返回 None

标签 python class oop polymorphism

我一直在尝试测试 Python 中的多态性 由于某种原因,我的函数返回 None 。 你能从下面的代码中看出原因吗?提前致谢

class Animal:
    __name = ""
    __height = 0
    __weight = 0
    __sound = 0

    def __init__(self, name, height, weight, sound):
        self.__name = name
        self.__height = height
        self.__weight = weight
        self.__sound = sound

    def set_name(self, name):
        self.__name = name

    def get_name(self):
        return self.__name

    def get_sound(self):
        return self.__sound

    def toString(self):
        return "{} is {} cm tall {} kg and says {}".format(self.__name, self.__height, self.__weight, self.__sound)

cat = Animal("Whiskers", 33, 10, "Meow")

-- 狗类:

class Dog(Animal):
    __owner = ""

    def __init__(self, name, height, weight, sound, owner):
        self.__owner = owner
        super(Dog, self).__init__(name, height, weight, sound)

    def set_owner(self, owner):
        self.__owner = owner

    def get_owner(self):
        return self.__owner

    def get_sound(self):
        return "Woff!"

    def toString(self):
        return "Overriden"

shnitzel = Dog("Shnitzel", 10, 15, 0, "CodingCode")

测试类:

class AnimalTesting:
    def get_sound(self, animal):
        animal.get_sound()

    test_animals = AnimalTesting()
    print test_animals.get_sound(cat)

该行:print test_animals.get_sound(cat) 返回 再次感谢大家!

最佳答案

我认为这非常简单,与多态性无关。您只是忘记了返回:

class AnimalTesting:
    def get_sound(self, animal):
        return animal.get_sound()

关于python - 基于多态性的函数返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428416/

相关文章:

python - nD线与Python中凸包的交点

python - 如何制作 pip "dry-run"?

delphi - 从 TObject 转换为接口(interface)类型

c# - 如何在 C# 中生成从库到应用程序的回调(事件)

python - 在执行任何导入和/或其他语句之前用虚拟对象替换对象

python - 如何在python中从命令行导入文件

c++ - 使用循环创建类对象

Java 类 - 当我读到部门时主要不编译

python - 为什么在 sklearn GridsearchCV SVM 中使用 class_weight 时会出现错误?

c++ - 存储一个函数c++,稍后调用