如何获取声明方法的类的引用?在下面的代码中,我尝试在Classical
中引用test
。
class Classical:
def method():
pass
def test(func):
# How can I get a reference to 'Classical' using only 'func'?
pass
test(Classical.method)
我试过dir()
和搜索,但无济于事。有任何想法吗? (如果重要,我正在运行Python 3.1)
编辑:更改代码以使其更有意义。
答案 0 :(得分:2)
在创建此类时,函数装饰器test()
在类Classical
的上下文中执行。在类体中执行代码时,该类尚不存在,因此无法访问它。您应该使用class decorator而不是函数装饰器来解决此问题。
或者,您可以告诉我们您实际想要实现的目标。最有可能的是,会有一个简单的解决方案。
编辑:要回答您编辑过的问题:要访问未绑定方法所属的类,您可以在CPython 2.x中使用unbound_method.im_class
。我不知道这是否可以移植到其他Python实现中,并且很可能有更好的方法来实现您想要实现的任何目标。