我的程序是从列表中显示动物的名称和类型,然后随机选择一种感觉。我可以得到前2个正确显示但感觉显示为:<绑定方法Animal.get_mood of< 0x105cdf940处的Animal.Animal对象>而且我无法弄清楚为什么任何帮助会很棒!
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
答案 0 :(得分:2)
由于你的get_mood()方法返回self .__情绪,你不能用它来初始化self .__情绪 - 这样做是指一个尚不存在的变量。看起来你可能想在init中调用check_mood()。记住“()”表示你正在调用方法,而不是将self .__情绪设置为等于方法,正如评论中指出的那样。
编辑:因为check_mood()实际上没有返回任何内容,所以需要将其分解为if / else语句,如下所示。或者,你可以让check_mood()返回新的心情。
这是固定的init函数应该是什么样的:
def __init__(self,animal_type, name, mood = None):
if mood:
self.__mood = mood
else:
self.check_mood()