Python:获取实例化类的名字?
问题描述:
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的名字。这甚至有可能吗?谢谢。
答
除非将'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
这为您
+0
是的,我有这样的感觉,要么是设置属性。谢谢,这是我正在寻找的答案。 – Chuck 2009-10-20 10:29:25
+0
@Chuck:好的,他*是*设置属性,所以要么我不理解您的评论,要么您不明白答案:P – MestreLion 2012-04-26 09:11:21
答
在您的__init__()
方法中,在有问题的类上设置一个变量,稍后再检索该方法。
如果您提出更好的问题,您会得到更好的答案。这个很不清楚。
'x'是一个局部变量,你如何“得到”它? – SilentGhost 2009-10-20 10:14:22
在你的例子中'x'是一个局部变量,只有当'meow'创建时才暂时存在。而'x' **是'Class2'的一个实例。你在问什么?请修正您的问题,使其有意义。 – 2009-10-20 10:21:28
这只是一个简单的例子,用来描述是否有我想要做的功能;没有使用实际的代码。我能够使用回调来检索实例。但是,这并不是真的与这个问题有关。 – Chuck 2009-10-20 10:28:18