我有以下代码:
class A:
pass
def set_event(a: A):
j = 4
def event():
print(f"event function j is {j}")
a.method = event
j = 999
b = A()
set_event(b)
b.method() # prints `event function j is 999`
我正在寻找一种允许重新定义 j 的实现方法,但不更改它在定义
event()
时捕获的值。这是,我要打印这段代码event function j is 4
这是我正在尝试做的另一个例子:
class A:
pass
def set_event(list_a):
for i in range(len(list_a)):
# def event():
# print(f"event function j is {j}")
#
# === OR ===
event = lambda: print(f"event function j is {j}")
list_a[i].method = event
j = 999
list_a = [A() for i in range(10)]
set_event(list_a)
[a.method() for a in list_a]
输出:
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999
event function j is 999