擅长:python、mysql、java
<p>不,这不是你想做的事。更改自定义对象的全局名称和属性是可能的(需要大量的工作),但这不是一个好主意。在</p>
<p>以下面的例子为例:</p>
<pre><code>foo = User('foo')
siteconfiguration.administrator = foo
users = [foo]
def process_users(users):
for user in users:
user._chusername('bar')
process_users(users)
</code></pre>
<p>我们这里有5个参考5个,分别是对^{<cd1>>}实例(<em>至少</em>>):全局名称{{<cd2>};在^{{<cd4>}}对象上的{{<cd3>}}属性;在{{<cd6>>}中^{{<cd5>>}中,索引^{{<cd5>>}中的{{<cd7>};本地名称{<cd7>};第五个参考是第五个参考是{<cd7>}};第五个参考是{<cd7>}的本地名称{{<cd10>}本地名称的本地名称中的{<cd10>}本地名称的本地名称的{{{<code>User._chusername()</code>方法,这是一个引用对同一个物体!<code>user</code>本地名称只简单地引用对象,但是当调用<code>User._chusername()</code>时,引用确实存在。在</p>
<p>现在告诉我调用<code>user._chusername()</code>时应该更改哪些名称?在</p>
<p>我在一开始就说过全局名称是可以更改的;您必须访问<code>globals()</code>字典并找到引用与<code>self</code>相同对象的所有键,并对Python当前导入的</em>所有模块执行此操作。然后,如果有对同一对象的引用,则必须在所有地方搜索所有自定义对象;否则,您将无法在上面的示例中找到<code>siteconfiguration.administrator</code>。在</p>
<p>这是一项艰巨的任务。在这里,梳理一下{a1}可能会有所帮助,但是现在你已经深陷Python兔子洞了,你可能应该重新考虑一下当初为什么要这样做。在</p>