[英]Dynamically call staticmethod in Python
我有一个 python object 有各种属性,其中之一是check=None
。
class MenuItem:
check: bool = True
在__init__()
过程中,它解析自己的属性并查看它们是否可调用。 如果是,它调用 function,并用 function 的结果替换它的实例变量:
def __init__(self):
self.request = ...
if callable(self.check):
self.check = self.check(self.request)
目的是让子类可以用 lambda 函数替换 class 属性:
class MainMenuItem(MenuItem):
check = lambda request: request.user.is_authenticated
到目前为止,一切都很好。 但是由于实例方法的调用隐式地将self
添加为第一个参数,我必须将每个 lambda(或外部函数)写为lambda self, request: ...
- external functions must be def check_superuser(self, request): ...
恕我直言,这看起来很糟糕。
Python 中有没有办法从“as staticmethod”方法调用 function? 喜欢
if callable(self.check):
self.check = staticmethod(self.check)(self.request)
(这显然行不通)
欢迎任何提示。 我完全认为错了吗?
这是你想要的?
class A:
check: bool = True
def __init__(self):
self.request = 'request'
if callable(self.check):
self.check = self.__class__.check(self.request)
class B(A):
check = lambda request: len(request)
b = B()
print(b.check)
产出 7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.