您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-在不同类的不同实例之间共享变量

Python-在不同类的不同实例之间共享变量

您不能在Python中引用变量。变量只是某个名称空间(通常__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和returnself而不是返回新值来处理其他变异方法

python 2022/1/1 18:35:15 有233人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶