python - 我可以在 python 中更改对象的 __name__ 属性吗?

标签 python object

像下面的例子那样改变对象的__name__属性的值是否正确:

>>>
>>> def f(): pass
...
>>> f.__name__
'f'
>>> b = f
>>> b.__name__
'f'
>>> b.__name__ = 'b'
>>> b
<function b at 0x0000000002379278>
>>> b.__name__
'b'
>>>

最佳答案

更改函数的名称不会使新名称可调用:

>>> def f(): print 'called %s'%(f.__name__)
...
>>> f()
called f
>>> f.__name__ = 'b'
>>> f()
called b
>>> b()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined

您必须定义 b 才能调用它。如您所见,简单地分配 b=f 并没有定义新函数。

关于python - 我可以在 python 中更改对象的 __name__ 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034327/

相关文章:

python - 为什么 itertools.combination_with_replacement 不为 3 个值的长度为 3 的组合给出 27 个结果?

python - 如何将Qt图形场景项保存在文件中并再次打开它?

javascript - 在字符串中的完整大写标题后添加换行符

javascript - 有没有办法让事件总时间始终为24小时

java - 如何从一个对象创建/引用另一个对象?

python - 将带有背景的文本精确定位在 matplotlib 图的一角

Python 字典语法错误 [学习 python 的困难方法 -ex39]

添加到数据库的 Python Django 表单

javascript - 迭代属性对象

javascript - 使文字对象具有参数?