Python 如何正确显示方法?
我的程序是从列表中显示动物的名称和类型,然后随机选择一种感觉。我可以让前2个正确显示,但感觉显示为: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
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:动物名单------雷克斯那条狗是没有的,我认为是情绪引起的。没有,但我不知道没有它该怎么办哦,我想我看到了问题——检查情绪实际上不归还任何东西,所以设定自我。和情绪等于它的返回将成为自我。特里沃的心情是没有的。我编辑了我的答案来解决这个问题。如果这个答案已经解决了你的问题,请点击上面的复选标记来考虑。@ @