从静态方法中提取类

问题描述 投票:0回答:1

给定一个类的

staticmethod
的函数,有没有办法从中提取父类对象?

class A:
   @staticmethod
   def b(): ...

...
f = A.b
...

assert get_parent_object_from(f) is A

我可以看到它埋在

__qualname__
中,但不知道如何提取它。

函数

get_parent_object_from
应该不知道父类
A

python static-methods
1个回答
0
投票

一种方法是使用自定义静态方法描述符,将所有者类设置为包装函数的属性:

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

演示这里

© www.soinside.com 2019 - 2024. All rights reserved.