Я пытаюсь проверить полиморфизм в 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)
раз спасибо!
Я думаю, что это довольно просто и не имеет ничего общего с полиморфизмом. Вы просто забыли return
:
class AnimalTesting:
def get_sound(self, animal):
return animal.get_sound()