了解所有变量是如何对象的

时间:2017-09-09 16:33:50

标签: python

据说python中的一切都是对象,我无法理解为什么以下代码以不同的方式工作:

foo=Foo()
print(foo)

输出:<__main__.Foo object at 0x0000029ACB4DA978>

a=10
print(a)

输出:10

现在,如果所有内容都是对象,那么为什么print(a)不会打印print(foo)所做的内容?

2 个答案:

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