我能得到一些帮助吗?我一直在 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>
任何克服此问题的技巧都会有很大帮助。
谢谢。
最佳答案
您需要使用 ()
实际调用方法,即使没有参数也是如此:
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-008 和 str.format
与 %
不同,未弃用)。您现在可以制作例如
nemo = Pet(4)
关于python - 无法打印类的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23320390/