从父类中解包

所以我一直在做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类中返回相同的2件事。 现在,当我对Animal进行say_noise()时,它会正常工作,因为它会返回:

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

但是,当我使用Dog类进行操作时,它什么也不会返回,我也尝试将它们解包(这是我在实际代码中的目标),但是当我这样做时。

a,b =doggy.say_noise()

它只是返回这个:

TypeError:无法解包不可迭代的NoneType对象

如何仅通过从父类继承它来使用相同的类方法返回相同的东西?

anlijinwei 回答:从父类中解包

这是因为您没有从Dogsay_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()
本文链接:https://www.f2er.com/2772516.html

大家都在问