【发布时间】:2012-06-03 22:28:31
【问题描述】:
我尝试了几种方法来更改定义中的函数名称,但都失败了。
>>> def f():
pass
>>> f.__name__
'f'
>>> def f():
f.__name__ = 'new name'
>>> f.__name__
'f'
>>> def f():
self.__name__ = 'new name'
>>> f.__name__
'f'
但我可以在定义后更改名称属性。
>>> def f():
pass
>>> f.__name__ = 'new name'
>>> f.__name__
'new name'
有什么方法可以在定义中更改/设置它(除了使用装饰器)?
【问题讨论】:
-
self.__method__()不起作用的原因是因为self是从解释器传递给参数的参数。没有将实例传递给您的函数的机制。 (顺便说一句,变量名不必是self,也可以是foo,或bar或其他) -
您是否正在编写此代码以确保工作安全? :)
-
这并不能回答您的问题,但我认为您会发现它很有趣,因为它解释了函数引用的一些“名称”:medium.com/@vadimpushtaev/name-of-python-function-e6d650806c4
标签: python function attributes