如何解决字典/数组的 Python 类属性
我正在使用 python 中的动态数据集,我想将它们存储在一个字典中,该字典会自动更新其他几个变量,并仅自动对数据的新/更新部分进行数据分析。我试图通过将数据保存在字典中来解决这个问题,然后使用 getter/setter 来更新它,但是当我更新字典条目时它没有调用 setter。
这是我正在尝试做的简化版本:
class MyClass():
def __init__(self):
# initial data
self._datadict = dict([['A',3]])
# initial analysis
self.squared = dict([[key,value ** 2] for key,value in self._datadict.items()])
@property
def datadict(self):
print('\t**accessed**')
return self._datadict
@datadict.setter
def datadict(self,key,entry):
print('working...')
# update data
self._datadict[key] = entry
# do analysis on updated part
self.squared[key] = entry ** 2
# initialize class
D = MyClass()
print('Initial:')
print('data: ',D.datadict)
print('squared:',D.squared)
# Update data
D.datadict['A'] = 4
print('\nAfter update:')
print('data: ',D.squared)
输出为:
Initial:
**accessed**
data: {'A': 3}
squared: {'A': 9}
**accessed**
After update:
**accessed**
data: {'A': 4}
squared: {'A': 9}
getter 似乎工作得很好(如“accessed”所示),但根本没有调用 setter,并且在更新数据本身时,它不会更新数据分析“self.squared”属性。
我该如何解决这个问题?有没有更好的方法来完成我想要做的事情?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。