如何正确显示方法?

时间:2015-04-20 02:49:33

标签: python list class python-3.x

我的程序是从列表中显示动物的名称和类型,然后随机选择一种感觉。我可以得到前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

1 个答案:

答案 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()