Функция на основе полиморфизма возвращает None

1

Я пытаюсь проверить полиморфизм в 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) возвращает None print test_animals.get_sound(cat) раз спасибо!

Теги:
class
polymorphism
oop

1 ответ

3

Я думаю, что это довольно просто и не имеет ничего общего с полиморфизмом. Вы просто забыли return:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню