Python 如何正确显示方法?

Python 如何正确显示方法?,python,list,class,python-3.x,Python,List,Class,Python 3.x,我的程序是从列表中显示动物的名称和类型,然后随机选择一种感觉。我可以让前2个正确显示,但感觉显示为:,我不明白为什么会有任何帮助 for item in animals: print(item.get_name(), "the", item.get_animal_type(), "is", item.get_mood()) def __init__(self,animal_type, name, mood = None): self.__mood = mood if mood

我的程序是从列表中显示动物的名称和类型,然后随机选择一种感觉。我可以让前2个正确显示,但感觉显示为:>,我不明白为什么会有任何帮助

for item in animals:
    print(item.get_name(), "the", item.get_animal_type(), "is", item.get_mood())

def __init__(self,animal_type, name, mood = None):
    self.__mood = mood if mood else self.get_mood
def set_mood(self, mood):
    self.__mood = mood

def check_mood(self):
    integer = random.randint(1,3)
    if integer == 1:
        self.__mood = "happy"
    elif integer == 2:
        self.__mood = "hungry"
    elif integer == 3:
        self.__mood = "sleepy"
def get_mood(self):
    return self.__mood
由于get\u mood()方法返回self.\u mood,因此不能使用它初始化self.\u mood-这样做是指一个尚不存在的变量。看起来您可能想在init中调用check_mood()。记住“()”表示您正在调用该方法,而不是设置self。正如Theye在评论中指出的那样,情绪等于该方法

编辑:因为check_mood()实际上不返回任何内容,所以需要将其分解为if/else语句,如下所示。或者,您可以让check_mood()返回新的情绪

下面是fixed init函数的外观:

def __init__(self,animal_type, name, mood = None):
    if mood:
        self.__mood = mood
    else:
        self.check_mood()

你需要像这样调用
get_mood
如果mood else self.get_mood()注意
get_mood
之后的
我刚刚这么做了,我收到了一个很长的回溯(最近的一个调用最后一个):generator/Animal.py“,第9行,在init self.get_mood=如果mood else self.get_mood()第40行,在get_uMood return self中。uu mood AttributeError:“Animal”对象没有属性“u Animal_uuuMood”我只是得到了uuuuuuuuuuuuu现在没有了,还有什么可以解决这个问题的吗?发生在哪一行?或者更好的是,你能发布你正在使用的完整代码吗?我不能从你这里复制这个问题。示例输出t:动物名单------雷克斯那条狗是没有的,我认为是情绪引起的。没有,但我不知道没有它该怎么办哦,我想我看到了问题——检查情绪实际上不归还任何东西,所以设定自我。和情绪等于它的返回将成为自我。特里沃的心情是没有的。我编辑了我的答案来解决这个问题。如果这个答案已经解决了你的问题,请点击上面的复选标记来考虑。@ @