我有一个工作装饰器,用于在一段时间内运行一个方法 True 并且它在常规函数上运行良好。当我尝试装饰实例的函数时会出现问题。
这是装饰器:
from threading import Thread
def run_in_while_true(f):
def decorator(break_condition=False):
def wrapper(*args, **kwargs):
while True:
if break_condition:
return
f(*args, **kwargs)
return wrapper
return decorator
class A(object):
@run_in_while_true
def print_ch(self, ch):
print ch
@run_in_while_true
def print_with_dec(ch):
print ch
print_with_dec()('f') # Call 1
# If i would want to pass a break condition i would write this
print_with_dec(1==1 and 2*2==4)('f')
a = A()
a.print_ch()('4') # Call 2
`
Call 1 按预期运行并打印了很多。出于某种原因,调用 2 获取了 break_condition 所在的 self 参数,因为对 break_condition 的检查为真并且函数返回。
我需要以何种方式更改装饰器才能使其也适用于对象?提前致谢
慕桂英3389331
明月笑刀无情
相关分类