python - 无法打印类的输出

标签 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>

任何克服此问题的技巧都会有很大帮助。

谢谢。

最佳答案

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

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)

关于python - 无法打印类的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23320390/

相关文章:

python - 计算网格中的孔数

c++ - 初始化静态成员时重新声明错误

c++ - 如何定义一个包含可变维度 vector 的类以及如何使用这个类?

java - 对象可以通过注释扩展功能吗? (SugarORM 示例)

python - re.findall - 将 ID 与名称匹配

Python "TypeError: ' <' not supported between instances of ' int'和 'NoneType'“

python - 解析文本文件python并转换为pandas dataframe

php - 是否有将国家名称转换为2个字母代码的类?

JavaScript 类扩展

java - 在返回集合的接口(interface)中使用 Java 泛型。最佳实践?陷阱?