【发布时间】:2014-11-03 01:53:10
【问题描述】:
我想从方法本身中找出定义某个方法的类的类型(本质上是方法的封闭静态范围),而不是明确指定它,例如
class SomeClass:
def do_it(self):
cls = enclosing_class() # <-- I need this.
print(cls)
class DerivedClass(SomeClass):
pass
obj = DerivedClass()
# I want this to print 'SomeClass'.
obj.do_it()
这可能吗?
【问题讨论】:
-
enclosing_class = lambda: SomeClass;-) -
您可能只需要搜索
mro。 -
@reddish -- 但你没有说明为什么。这闻起来像 XY problem。
-
@reddish -- 当然不是,但我真的 am 想提供帮助。但是,你所要求的是一件很难实现的事情。它可能归结为检查堆栈帧和代码对象——可能会遍历 MRO 并检查那里定义的每个方法的源代码,直到找到所需的内容。如果您让我们知道这样的功能有什么实用程序,我们可能会为您指出一个更容易/更整洁/更清洁的替代方案来实现相同的目标。
-
您要的是哪个版本的 Python?因为,虽然这几乎可以肯定是一件非常糟糕的事情,但至少有一些实现和版本的方法,但它们不一定相同,我不想回答每个可能的版本…
标签: python