распаковать из родительского класса - PullRequest
0 голосов
/ 14 января 2020

Итак, я делал RPG-игру и столкнулся с некоторыми проблемами с наследованием и распаковкой. Я попытался сделать простую версию проблемы, которую я имею:

class Animal():
    def __init__(self,name):
        self.name = name
    def say_noise(self):
        noise = "I am an animal"
        by_who = "Animal"
        return noise,by_who
class Dog(Animal):
    def __init__(self,name):
        self.name = name
    def say_noise(self):
        Animal.say_noise(self)

animal = Animal("man")
doggy = Dog("name")

Что я хочу сделать, это вернуть те же две вещи в классе Animal и классе Dog. Теперь, когда я выполняю say_noise () с моим Animal, он работает нормально, так как возвращает:

('I am an animal', 'Animal')

Однако, когда я делаю это с классом Dog, он ничего не возвращает, и я также попытался распаковать их (это то, что я собираюсь сделать в моем реальном коде), но когда я делаю это.

a,b =doggy.say_noise()

, он просто возвращает это:

TypeError: не может распаковать не повторяемый NoneType object

Как я могу вернуть то же самое с помощью того же метода класса, только унаследовав его от родительского класса?

1 Ответ

0 голосов
/ 14 января 2020

Это потому, что тур ничего не возвращает из Dog классов say_noise метода. Обновите ваш код следующим образом:

class Animal():
    def __init__(self, name):
        self.name = name

    def say_noise(self):
        noise = "I am an animal"
        by_who = "Animal"
        return noise, by_who


class Dog(Animal):
    def __init__(self, name):
        self.name = name

    def say_noise(self):
        return Animal.say_noise(self)


animal = Animal("man")
doggy = Dog("name")
a, b = doggy.say_noise()
...