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

时间:2009-10-20 10:11:43

标签: python class instance

示例:

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 :(得分:5)

除非您将'creator'的实例传递给Class2()构造函数,否则不能。 e.g。

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

这会为您创建类之间的反向链接

答案 1 :(得分:1)

在您稍后检索的__init__()方法中为相关课程设置一个变量。

如果你提出更好的问题,你会得到更好的答案。这个还不太清楚。

答案 2 :(得分:0)

您的问题与回答here非常相似。请注意,您可以确定在其构造函数中创建实例的人员,但之后不会。无论如何,最好的方法是明确地将创建者传递给构造函数。