基本上,是否已有内置或常用的功能可以执行此操作:
def rename_attribute(object_, old_attribute_name, new_attribute_name):
setattr(object_, new_attribute_name, getattr(object_, old_attribute_name))
delattr(object_, old_attribute_name)
答案 0 :(得分:8)
不,没有,但你可以让更容易玩命名空间:
def rename_attribute(obj, old_name, new_name):
obj.__dict__[new_name] = obj.__dict__.pop(old_name)
答案 1 :(得分:3)
这样做没有内置或标准库函数。我假设,因为:
答案 2 :(得分:1)
您可以做的是使用 Setter and Getter bult-in python's methods 为原始属性提供外观/重命名。
例如:假设您有一个属性 attr
,并且您想将其重命名为 new_attr
,以便在引用 attr
时返回或修改 new_attr
。< /p>
class Foo:
def __init__(self, a):
self.attr = a
@property
def new_attr(self):
return self.attr
@new_attr.setter
def new_attr(self, new_value):
self.attr = new_value
当为其新名称调用属性时,我们有:
if __name__ == '__main__':
f = Foo(2)
print('The renamed attribute is', f.new_attr)
f.new_attr = 5
print('The renamed attribute after using setter method is', f.new_attr)
print('The old attribute is', f.attr)
在输出处:
'The renamed attribute is 2'
'The renamed attribute after using setter method is 5'
'The old attribute is 5'
<块引用>
请注意,attr
始终仍可供使用,而 new_attr
始终会引用 attr
。