Python 在控制台中调用时,类的默认打印方法是什么?
在Python交互控制台(IDLE、IPython等)中,如果我自己输入变量名,我将获得打印该变量的等价物Python 在控制台中调用时,类的默认打印方法是什么?,python,Python,在Python交互控制台(IDLE、IPython等)中,如果我自己输入变量名,我将获得打印该变量的等价物 In [1]: foo = {'a':1, 'b':2} In [2]: foo Out [2]: {'a':1, 'b':2} In [3]: print(foo) Out [3]: {'a':1, 'b':2} 我希望将此功能合并到容器类中,如: class Foo(): def __init__(self, bar): self.bar = bar
In [1]: foo = {'a':1, 'b':2}
In [2]: foo
Out [2]: {'a':1, 'b':2}
In [3]: print(foo)
Out [3]: {'a':1, 'b':2}
我希望将此功能合并到容器类中,如:
class Foo():
def __init__(self, bar):
self.bar = bar
def __mysteryfunction__(self)
print(self.bar)
我希望类像以前一样打印,但我得到:
In [1]: foo = Foo({'a':1, 'b':2})
In [2]: foo
Out [2]: <__main__.foo at 0x1835c093128>
[1]中的:foo=foo({'a':1,'b':2})
在[2]中:foo
出[2]:
我已经搜索了几乎所有我能想到的可能被称为什么的排列,但没有找到相同的问题。这是我希望的类方法,还是控制台解释器中内置的某种方法?如果是后者,是否可以修改?对于
print x
,x.\uu str\uu
。
对于返回对象时REPL中的输出,x.\uuuu repr\uuuu
阅读和函数。这是类的
\uuu str\uu
方法
从:
object.\uuuu str\uuuuuu(self)
由str(object)和内置函数format()和print()调用,以计算对象的“非正式”或可良好打印的字符串表示形式。返回值必须是字符串对象
例如:
class Foo:
def __init__(self, bar):
self.bar = bar
def __str__(self):
return 'My name is foo and my bar is ' + self.bar
foobar = Foo('high')
print(foobar) # My name is foo and my bar is high
分别使用
\uuu str\uuuu
和\uu repr\uuuu
的神奇方法进行打印
和REPL。我还应该注意,我知道调用函数,但想知道是否有一种方法可以直接使用foo
而不是foo()
。完美的,repr就是我想要的。根据您的回答,在问题末尾添加了完整答案。谢谢