实例未出现在 shell
Instance does not appear in shell
我目前正在学习 Python,我对其行为感到非常困惑。我正在创建 class 的实例并直接调用它。当我执行脚本时,它不会出现在 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
您不能只键入一个对象并期望它打印出来。您需要告诉 python 打印它。 shell 不同,旨在始终打印输出。
正如 Gordon 先生在他的评论中指出的那样,REPL 将打印对象,但在脚本中它不会打印出来,除非您告诉它这样做。如果你想要与 REPL 相同类型的行为,你可以这样做:
print(repr(f))
那应该给你:
repr[1234]
这是你要找的吗?
我目前正在学习 Python,我对其行为感到非常困惑。我正在创建 class 的实例并直接调用它。当我执行脚本时,它不会出现在 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
您不能只键入一个对象并期望它打印出来。您需要告诉 python 打印它。 shell 不同,旨在始终打印输出。
正如 Gordon 先生在他的评论中指出的那样,REPL 将打印对象,但在脚本中它不会打印出来,除非您告诉它这样做。如果你想要与 REPL 相同类型的行为,你可以这样做:
print(repr(f))
那应该给你:
repr[1234]
这是你要找的吗?