首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:存储自身变量的值

Python:存储自身变量的值
EN

Stack Overflow用户
提问于 2020-05-16 00:09:02
回答 2查看 374关注 0票数 0

在像prev_counter_data这样的其他变量中存储变量self.data_counter时,我遇到了问题。我只是不能存储当前值--我赋给self.data_counter的变量在某种程度上总是有完全相同的值。

代码语言:javascript
复制
class SimpleSwitch(app_manager.RyuApp):

    def __init__(self, *args, **kwargs):
        super(SimpleSwitch, self).__init__(*args, **kwargs)
        self.data_counter = {}
        self.monitor_thread = hub.spawn(self._monitor)

    def _monitor(self):
        timer = 0
        prev_data_counter = self.data_counter
        while True:
            hub.sleep(5)
            timer = timer + 5
            # assign current values to self.data_counter in func()
            func()
            # compare current values to previous values

            if (timer%60) == 0:
                prev_data_counter = self.data_counter

你知道我思维上的缺陷在哪里吗?为什么prev_data_counter总是等于self.data_counter

字典self.data_counter包含像(id,port):traffic这样的信息。我可以通过self.data_counter[id][port] = traffic赋值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 00:16:05

当你做self.prev_data_counter = self.data_counter的时候,我们说它们是同一个对象。

尝试:

self.prev_data_counter = copy.copy(self.data_counter)

并添加复制包:import copy

另请参阅:https://docs.python.org/2/library/copy.html

票数 2
EN

Stack Overflow用户

发布于 2020-05-16 00:20:34

你的数据计数器是字典。字典是可变对象。当您将self.data_counter指定给prev_data_counter时,实际上只是保存了对同一字典对象的引用。因此,当您更新self.data_counter时,也会更新prev_data_counter -它们引用的是同一个对象。

您需要创建字典的副本:

代码语言:javascript
复制
prev_data_counter = self.data_counter.copy()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61823684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档