在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
def __mysteryfunction__(self)
print(self.bar)
我喜欢像以前一样打印课程,但我得到了:
In [1]: foo = Foo({'a':1, 'b':2})
In [2]: foo
Out [2]: <__main__.foo at 0x1835c093128>
我已经搜索了几乎所有我能想到的可能被称之为的排列,并且没有找到同样的问题。这是一个像我希望的类方法,还是内置在控制台解释器中的东西?如果是后者,可以修改吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
这是类的__str__
方法。
object.__str__(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