Python交互式外壳程序:当我简单地输入对象名称时,如何知道将使用哪种方法?

时间:2018-10-20 16:37:03

标签: python shell

当它是一个字符串或数字清楚时,将分别打印

A =“这是一个字符串”
B = 3

Project.find({
    where: {id: 1}, 
    include: [{model: Task, include: [{model: TaskCategory}]}]
})

如果我有更复杂的对象怎么办?我问是因为我正在学习一个模块和

A
this is a string
B
3

结果为一行(实际上会覆盖前一个输入)

A.name 
B.name 

分为两行(正常行为)

1 个答案:

答案 0 :(得分:1)

如果只是将对象放入控制台,则将调用__repr__方法,您将看到该方法返回的内容。显式使用__str__打印。如果没有print,则__repr__会退回到__str__

演示:

>>> class A:
...     def __repr__(self):
...         return '__repr__'
...     def __str__(self):
...         return '__str__'
... 
>>> a = A()
>>> a
__repr__
>>> print(a)
__str__
>>> del A.__str__
>>> a
__repr__
>>> print(a)
__repr__
>>> del A.__repr__
>>> a
<__main__.A object at 0x7f4bdf0034a8>
>>> print(a)
<__main__.A object at 0x7f4bdf0034a8>