如何在Python中从self方法获取自对象名称
我想找到一种方法,可以在用 print object
打印对象时,自动显示对象的引用名称。具体来说,假设我有一个类:
class A:
def __init__(self):
self.cards = []
def __str__(self):
# return a string representation of A
return "A contains " ...
...
每当我创建一个对象时:
test = A()
然后我使用 print test
,我会得到类似这样的结果(别在意那些点):
A contains ...
我想要实现的是,自动打印对象的引用名称,而不是类的名称:
test contains ...
使用 self.__class__
或 self.__name__
是不行的,因为它们返回的字符串看起来很奇怪,比如 <class '__main__.A'>
。
那么,应该如何实现 __str__
才能达到这个效果呢?谢谢!
2 个回答
1
我知道我回复得有点晚,但如果有人像我一样碰到这个问题,这里有个解决办法:
type(self).__name__
你的实现方式应该是:
class A:
def __init__(self, name):
self.cards = []
self.name = name
def __str__(self):
return '{} contains...'.format(type(self).__name__)
a=A('test')
print(a)
# A contains ...
2
正如你问题下的评论所说,这种做法是不可能的,而且也不明智。建议你考虑以下这种方法:
class A:
def __init__(self, name):
self.cards = []
self.name = name
def __str__(self):
return '{} contains ...'.format(self.name)
>>> test = A('test')
>>> print test
test contains ...
>>> a = A('hello')
>>> print a
hello contains ...