我目前正在学习Python,而且我对它的行为非常困惑。我正在创建一个类的实例并直接调用它。当我执行脚本时,它不会出现在shell上,只有当我直接在shell中调用它时。为什么Python表现得那样或者它是IDLE的问题?
这里是foo.py的代码:
class Foo:
def __init__(self, _data=None):
self.data = _data
def __repr__(self):
return "repr[%s]" % self.data
def __str__(self):
return "str[%s]" % self.data
if __name__ == "__main__":
print "Begin"
f = Foo(1234)
print "direct"
f
print "print"
print f
print "End"
这是shell输出:
Begin
direct
print
str[1234]
End
>>> f
repr[1234]
>>>
顺便说一下。我在linux(ubuntu 16.04 LTS)上使用IDLE 2.7.12和Python 2.7.12
答案 0 :(得分:1)
正如戈登先生在评论中指出的那样,REPL会打印该对象,但在脚本中它不会打印出来,除非你告诉它这样做。如果您想要与REPL相同类型的行为:
print(repr(f))
那应该给你:
repr[1234]
这就是你要找的东西吗?
答案 1 :(得分:0)
您无法输入期望打印的对象。你需要告诉python打印它。外壳是不同的,旨在始终打印输出。