8

例子:

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

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

meow = Class1()

如何派生创建 self.x 实例的类名?换句话说,如果给我实例 self.x,我如何获得名称“Class1”?Usingself.x.__class__.__name__显然只会给你 Class2 的名字。这甚至可能吗?谢谢。

4

3 回答 3

5

您不能,除非您将“创建者”的实例传递给 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

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

于 2009-10-20T10:18:23.253 回答
1

在您的方法中为有问题的类设置一个变量,__init__()然后稍后检索该变量。

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

于 2009-10-20T10:14:43.463 回答
0

您的问题与此处回答的问题非常相似。请注意,您可以确定谁在其构造函数中创建了该实例,但不能在之后确定。无论如何,最好的方法是将创建者显式传递给构造函数。

于 2009-10-20T10:25:37.230 回答