如何在python中打印可打印的对象信息

时间:2014-03-20 10:20:49

标签: python object

请参阅:

>>> class A:
...     a = 3
... 
>>> tmp=A()
>>> tmp
<__main__.A instance at 0xb7340c2c>
>>> A
<class __main__.A at 0xb733c26c>
>>> tmp.a
3

我希望tmp.a也有'tmp'和'A'之类的输出,这可能吗?

请注意这个tmp不在tmp中。所以我想要的是:

>>> tmp.a
<int tmp.a at ...>

2 个答案:

答案 0 :(得分:4)

每个对象都可以有一个__str__,您还可以定义一个__repr__方法,该方法将被打印出来。

>>> class A(object):
...     a = 3
...     def __str__(self):
...         return repr(self)+': a: %d' % self.a
...     def __repr__(self):
...         return 'A object with id %d ' % id(self)
...
>>> b=A()
>>> b
A object with id 4340531472
>>> print b
A object with id 4340531472 : a: 3

答案 1 :(得分:0)

不,tmp.a是一个整数对象。它将像任何其他整数对象一样显示。但是,您可以定义使用函数来获取a的表示。

class A:
    a = 3
    def repr_a(self):
        return repr(self) + ': a: ' + str(self.a)

任何对象的“可打印信息”实际上由__repr____str__函数控制。所以,你可以简单地定义它。

class A:
    a = 3
    def __repr__(self):
        return 'Class A: a = ' + str(self.a)