code
class A:
key: str = None
sleep_seconds: int = 10
def run_forever(func):
@wraps(func)
def wrapped(self, *args, **kwargs):
while True:
func(self, *args, **kwargs)
time.sleep(self.sleep_seconds)
return wrapped
@run_forever
def test(self):
print(123)
A().test()
这样虽然可以,但是 pycharm 标黄,而且觉得写的不对。另装饰器用到了类的参数。 有没有更好 /正确的写法? 虽然这样没问题,但是
1
frostming 2020-12-11 17:37:12 +08:00
当然是用 descriptor,把 func 包一层
def __get__(self, ins, kls) 里面就能拿到类的参数,然后返回一个更新了的自己 |