据说python中的一切都是对象,我无法理解为什么以下代码以不同的方式工作:
foo=Foo()
print(foo)
输出:<__main__.Foo object at 0x0000029ACB4DA978>
a=10
print(a)
输出:10
现在,如果所有内容都是对象,那么为什么print(a)
不会打印print(foo)
所做的内容?
答案 0 :(得分:0)
print
通过调用它的__str__
方法显示对象的字符串表示形式。 Foo
似乎继承了默认的__str__
,它返回一个显示对象类型和标识的字符串。 int
返回一个字符串,显示其值的十进制表示。
答案 1 :(得分:0)
当您使用print( )
时,您要求Python显示对象的可视化表示,以便我们人类可以看到它是什么。要打印对象,必须使用方法__str__
或__repr__
。
对于字符串"your string"
或整数123
等简单对象,键入__str__
时会使用print(123)
方法。
该方法设置为显示整数值。
但是对于更复杂的对象,特别是对于程序员(你)创建的对象,如果你没有实现自己的__str__
或__repr__
方法,Python只会打印函数&#39; s(对象&#) 39; s)该对象所在的内存中的名称和地址。
一旦您对面向对象编程有了更深入的了解,您就可以创建自己的__str__
和__repr__
方法,这些方法将覆盖Python使用的基本方法,并显示您想要的任何信息。那个对象。
希望它有所帮助。
Tomasz Kluczkowski