给定一个类的
staticmethod
的函数,有没有办法从中提取父类对象?
class A:
@staticmethod
def b(): ...
...
f = A.b
...
assert get_parent_object_from(f) is A
我可以看到它埋在
__qualname__
中,但不知道如何提取它。
函数
get_parent_object_from
应该不知道父类 A
。
一种方法是使用自定义静态方法描述符,将所有者类设置为包装函数的属性:
class StaticMethod(staticmethod):
def __set_name__(self, owner, name):
self.__wrapped__.owner = owner
class A:
@StaticMethod
def b(): ...
f = A.b
assert f.owner is A
演示这里