Python: получить имя экземпляра класса?

пример:

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

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

meow = Class1()

как мне получить имя класса, создавшего self.экземпляр x? Другими словами, если бы мне дали пример себя.x, как мне получить имя "Class1"? Используя self.x.__class__.__name__, очевидно, даст вам только имя Class2. Это вообще возможно? Спасибо.

3 ответов


вы не можете, если вы не передадите экземпляр "создателя" конструктору 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

Это создает обратную связь между классами для вас


задайте переменную для рассматриваемого класса в вашем __init__() метод, который вы затем получите позже.

вы получите лучшие ответы, если будете задавать лучшие вопросы. Это довольно неясно.


Ваш вопрос очень похож на ответ здесь. Обратите внимание, что вы можете определить, кто создал экземпляр в конструкторе, а не после. Во всяком случае, лучший способ-явно передать creator в конструктор.