实例未出现在shell

时间:2018-01-09 19:58:51

标签: python shell python-idle

我目前正在学习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

2 个答案:

答案 0 :(得分:1)

正如戈登先生在评论中指出的那样,REPL会打印该对象,但在脚本中它不会打印出来,除非你告诉它这样做。如果您想要与REPL相同类型的行为:

print(repr(f))

那应该给你:

repr[1234]

这就是你要找的东西吗?

答案 1 :(得分:0)

您无法输入期望打印的对象。你需要告诉python打印它。外壳是不同的,旨在始终打印输出。