请检查以下简单代码:
def extract_class_from_func(func_var):
# should return class of the func_var
return ...
class A:
def m(self):
print(self, "m")
func_var = A.m
# This check should succeed
assert A == extract_class_from_func(func_var)
请帮助我实现方法extract_class_from_func
问题来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你不能 在Python 2中,此引用可从Amim_class
获得。但是,引用PEP 3155-类和函数的合格名称:
这种可能性在Python 3中已经消失了。
不再存在“未绑定方法”之类的东西,并且函数“ Am”与常规函数没有什么不同-它不包含对类对象的任何引用。实际上,您甚至可以删除该类并看到“方法”仍然有效:
>>> class Ameta(type):
... def __del__(self):
... print("goodbye A")
...
>>> class A(metaclass=Ameta):
... def m(self):
... print(self, "m")
...
>>> f = A.m
>>> import gc
>>> del A
>>> gc.collect()
goodbye A
6
>>> f("")
m
但是,PEP确实为您想要的内容提供了有限的支持:如果您查看“ Am qualname ”,您将找到一个字符串,可以从该字符串内省一下类A。
回答来源:stackoverflow