实例未出现在 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]

这是你要找的吗?