__dict__是模块,类或实例对象的名称,或函数调用框架内的特殊本地名称空间)的名称。
您可以引用 值 ,但是数字当然是不可变的,因此您不能将数字1更改为数字2。
所以,你所能做的就是创造某种持有数量可变的值,并分享引用的 那个 。
一种明显的可能性是仅给每个
Specific实例一个对
General创建它的实例的引用:
class General(): def __init__(self): self._shared_variable = 0 self._specific1 = Specific(self) self._specific2 = Specific(self)class Specific(): def __init__(self, shared_general): self._shared_general = shared_general def modify_shared_variable(self): self._shared_general._shared_variable +=1
另一种可能性是存储一个单元素列表:
class General(): def __init__(self): self._shared_variable = [0] self._specific1 = Specific(self._shared_variable) self._specific2 = Specific(self._shared_variable)class Specific(): def __init__(self, shared): self._shared = shared def modify_shared_variable(self): self._shared[0] += 1
(这实际上与您在C ++中所做的一样,但是没有数组和指针的语法糖几乎是同一件事……)
或者,您可以创建一个简单的
MutableInteger类,该类包含一个
int,代理非变异方法,添加一个
set替代它的方法
+=以及通过调用
set和return
self而不是返回新值来处理其他变异方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)