Python:如何获取实例化类的名称?

8 投票
3 回答
17283 浏览
提问于 2025-04-15 15:12

举个例子:

class Class1:
    def __init__(self):
        self.x = Class2('Woo!')

class Class2:
    def __init__(self, word):
        print word

meow = Class1()

我怎么才能得到创建了这个 self.x 实例的类名?换句话说,如果我有这个实例 self.x,我该怎么得到 'Class1' 这个名字?用 self.x.__class__.__name__ 只会给我 Class2 的名字。这可能吗?谢谢。

3 个回答

0

你的问题跟这里的回答很相似。需要注意的是,你可以在对象的构造函数里确定是谁创建了这个实例,但在之后就无法知道了。总的来说,最好的方法是把创建者的信息直接传入构造函数里。

0

在你想要的类里面,在__init__()方法中设置一个变量,然后你可以在后面的代码中取用这个变量。

如果你想要更好的答案,记得提问的时候要更清楚。这次的问题有点模糊。

6

你不能这样做,除非你把一个'creator'的实例传递给Class2()的构造函数。比如:

class Class1(object):
    def __init__(self, *args, **kw):
        self.x = Class2("Woo!", self)

class Class2(object):
    def __init__(self, word, creator, *args, **kw):
        self._creator = creator
        print word

这样做会在这两个类之间建立一个反向链接。

撰写回答