无法打印课程输出

时间:2014-04-27 07:00:19

标签: python class oop output

我能帮忙吗?我一直在python 3.3上尝试OOP。但是我在打印输出时遇到了问题。这是一个例子:

class pet(object):
    number_of_legs = 0
    def sleep (self):
        print('Zzzzz')
    def count_legs(self):
        print ('I have %s legs' %(self.number_of_legs))

nemo = pet ()
nemo.number_of_legs = 4
nemo.count_legs
nemo.sleep

输出:

bound method pet.count_legs of <__main__.pet object at 0x033D4230>
bound method pet.sleep of <__main__.pet object at 0x033D4230>

有关克服这个问题的任何提示都会有很大的帮助。

感谢。

2 个答案:

答案 0 :(得分:4)

即使没有参数,您也需要使用()实际调用方法:

nemo.count_legs()
nemo.sleep()

方法实际上只是一个可调用的属性;使用instance.attribute获取方法对象本身,并使用括号instance.attribute()调用它。

另请注意,number_of_legs正如您目前拥有的那样,是一个类属性,由所有实例共享。假设不同的宠物可以有不同数量的腿,我会改为使其成为实例属性,您可以在初始化时执行此操作:

class Pet:

     def __init__(self, legs):
         self.legs = legs

     def sleep(self):
         print("Zzz")

     def count_legs(self):
         print("I have {0.legs} legs.".format(self))

(类按约定大写/ PEP-008str.format命名,与%不同,不推荐使用)。你现在可以制作例如。

nemo = Pet(4)

答案 1 :(得分:1)

您必须包含()

nemo = pet ()
nemo.number_of_legs = 4
nemo.count_legs()
nemo.sleep()

这样,你实际上是在调用方法而不是获取方法。

[OUTPUT]
I have 4 legs
Zzzzz