Python 在类本身内重命名类对象名称

Python 在类本身内重命名类对象名称,python,python-3.x,Python,Python 3.x,所有这些都有效。但是我希望方法\u chusername也更改变量foo本身的名称。因此,fooas对象不再存在,但创建了一个具有相同属性的新对象bar: class User: def __init__(self, username): self.name = username def _chusername(self, new_name): old = self.name self.name=new_name foo = U

所有这些都有效。但是我希望方法
\u chusername
也更改变量
foo
本身的名称。因此,
foo
as对象不再存在,但创建了一个具有相同属性的新对象
bar

class User:
    def __init__(self, username):
        self.name = username

    def _chusername(self, new_name):
        old = self.name
        self.name=new_name

foo = User('foo')
foo._chusername('bar')

因此,我需要在类本身中指定给对象的变量的名称。这可能吗?有没有一种方法我有限的知识不包括?

您不能更改变量本身的名称,但可以将对象分配给新变量 像这样:

但我不明白你到底想做什么。一定有比这更好的方法 尝试更改“变量名”


请务必解释

您不能更改变量本身的名称,但可以将对象分配给新变量 像这样:

但我不明白你到底想做什么。一定有比这更好的方法 尝试更改“变量名”


请务必解释

您不能更改变量本身的名称,但可以将对象分配给新变量 像这样:

但我不明白你到底想做什么。一定有比这更好的方法 尝试更改“变量名”


请务必解释

您不能更改变量本身的名称,但可以将对象分配给新变量 像这样:

但我不明白你到底想做什么。一定有比这更好的方法 尝试更改“变量名”


一定要解释清楚不,这不是你想做的事。可以(通过大量工作)更改自定义对象的全局名称和属性,但这不是一个好主意

以以下为例:

>>> foo = User('foo')
>>> foo._chusername('bar')

>>> bar = foo
>>> del foo # Deletes the original 'foo' object
>>> bar.name
bar
这里我们有5个对
用户('foo')
实例的引用(至少):全局名称
foo
siteconfiguration
对象上的
administrator
属性;
users
中索引
0
处的参考;
process_users
for
循环中的本地名称
user
;第五个引用是
User.\u chusername()
方法中的
self
本地名称,这是对同一对象的引用!
user
本地名称仅短暂引用对象,但调用
user.\u chusername()
时引用确实存在

现在告诉我调用
user.\u chusername()
时应该更改哪些名称

我一开始说,全球名称可以更改;您必须访问
globals()
字典,查找引用与
self
相同对象的所有键,并对Python当前导入的所有模块执行此操作。然后,如果存在对同一对象的引用,则必须搜索所有自定义对象,无论在何处;否则,您将无法在上述示例中找到
siteconfiguration.administrator


这是一项艰巨的任务。梳理一下可能会有所帮助,但现在你已经陷入了Python兔子洞,你应该重新思考一下当初为什么要这么做。

不,这不是你想做的事情。可以(通过大量工作)更改自定义对象的全局名称和属性,但这不是一个好主意

以以下为例:

>>> foo = User('foo')
>>> foo._chusername('bar')

>>> bar = foo
>>> del foo # Deletes the original 'foo' object
>>> bar.name
bar
这里我们有5个对
用户('foo')
实例的引用(至少):全局名称
foo
siteconfiguration
对象上的
administrator
属性;
users
中索引
0
处的参考;
process_users
for
循环中的本地名称
user
;第五个引用是
User.\u chusername()
方法中的
self
本地名称,这是对同一对象的引用!
user
本地名称仅短暂引用对象,但调用
user.\u chusername()
时引用确实存在

现在告诉我调用
user.\u chusername()
时应该更改哪些名称

我一开始说,全球名称可以更改;您必须访问
globals()
字典,查找引用与
self
相同对象的所有键,并对Python当前导入的所有模块执行此操作。然后,如果存在对同一对象的引用,则必须搜索所有自定义对象,无论在何处;否则,您将无法在上述示例中找到
siteconfiguration.administrator


这是一项艰巨的任务。梳理一下可能会有所帮助,但现在你已经陷入了Python兔子洞,你应该重新思考一下当初为什么要这么做。

不,这不是你想做的事情。可以(通过大量工作)更改自定义对象的全局名称和属性,但这不是一个好主意

以以下为例:

>>> foo = User('foo')
>>> foo._chusername('bar')

>>> bar = foo
>>> del foo # Deletes the original 'foo' object
>>> bar.name
bar
这里我们有5个对
用户('foo')
实例的引用(至少):全局名称
foo
siteconfiguration
对象上的
administrator
属性;
users
中索引
0
处的参考;
process_users
for
循环中的本地名称
user
;第五个引用是
User.\u chusername()
方法中的
self
本地名称,这是对同一对象的引用!
user
本地名称仅短暂引用对象,但调用
user.\u chusername()
时引用确实存在

现在告诉我调用
user.\u chusername()
时应该更改哪些名称

我一开始说,全球名称可以更改;您必须访问
globals()
字典,查找引用与
self
相同对象的所有键,并对Python当前导入的所有模块执行此操作。然后必须搜索所有自定义对象,例如