Python 给定一个带闭包的函数,我可以引用它吗';s的关闭范围?
我想提及功能的关闭范围:Python 给定一个带闭包的函数,我可以引用它吗';s的关闭范围?,python,Python,我想提及功能的关闭范围: class C(): def d(self): def fn_class(): return return fn_class fn = C().d() fn # <function C.d.<locals>.fn_class at 0x0000025E8A381E18> fn.__closure__ # None class C(): def d(自我): def fn_类():
class C():
def d(self):
def fn_class():
return
return fn_class
fn = C().d()
fn
# <function C.d.<locals>.fn_class at 0x0000025E8A381E18>
fn.__closure__
# None
class C():
def d(自我):
def fn_类():
返回
返回fn_类
fn=C().d()
fn
#
fn.\uuuu闭包__
#没有
我只想做的是,只考虑到
fn
,我想回到self
,fn.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 你所做的是正确的,但因为fn\u类
没有从d
或C
中提取任何信息,\uu闭包
没有信息给你,所以它是无
现在,如果要这样修改d
:
def d(self):
x = 5
def fn_class():
return x
return fn_class
def d(self):
def fn_class(self):
return
return fn_class
然后做:
fn = C().d()
fn
# <function C.d.<locals>.fn_class at 0x0000025E8A381E18>
fn.__closure__
# (<cell at 0x7fedb0a5be88: int object at 0x9a3180>,)
然后,你可以做:
fn.__code__.co_varnames
# ('self',)
但是在这种情况下,回到self
的实际位置要困难得多。你所做的是正确的,但是因为fn\u类
没有从d
或C
中提取任何信息,\u闭包
没有信息给你,所以它是无
现在,如果要这样修改d
:
def d(self):
x = 5
def fn_class():
return x
return fn_class
def d(self):
def fn_class(self):
return
return fn_class
然后做:
fn = C().d()
fn
# <function C.d.<locals>.fn_class at 0x0000025E8A381E18>
fn.__closure__
# (<cell at 0x7fedb0a5be88: int object at 0x9a3180>,)
然后,你可以做:
fn.__code__.co_varnames
# ('self',)
但是在那种情况下回到self的实际位置要困难得多。哦,我完全明白问题所在,我是框架开发者,函数fn_类
是由其他开发者编写的,fn_类
传递到我的框架,因此,我无法控制fn\u类的内容。我需要一种更老练的方法来做。如果fn_class
没有关闭任何东西,那么它一开始就不是一个关闭。谢谢你们的帮助,我想我会强制每个人也把自己传给我,而不是做任何不正当的事!现在每个人都要改变他们的代码。哦,我完全明白问题所在,我是框架开发者,函数fn_类
是由其他开发者编写的,而fn_类
是传递给我的框架的,所以我无法控制fn_类
的内容。我需要一种更老练的方法来做。如果fn_class
没有关闭任何东西,那么它一开始就不是一个关闭。谢谢你们的帮助,我想我会强制每个人也把自己传给我,而不是做任何不正当的事!现在每个人都要改变他们的密码。