请参阅:
>>> 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 ...>
答案 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)