如何在Python中从self方法获取自对象名称

4 投票
2 回答
13703 浏览
提问于 2025-04-18 06:06

我想找到一种方法,可以在用 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 ...

撰写回答