Python 如何编写容器类并导入实例化对象?
我想构建一个类来存储数据集合。这些数据是从结构化文件(如yaml、json或xml)中读取的。。。他们不应该改变。我写了两门课。第一个描述数据的一个元素,另一个描述整个数据。实际上,类Python 如何编写容器类并导入实例化对象?,python,module,Python,Module,我想构建一个类来存储数据集合。这些数据是从结构化文件(如yaml、json或xml)中读取的。。。他们不应该改变。我写了两门课。第一个描述数据的一个元素,另一个描述整个数据。实际上,类AllData是一种列表或dict,使用\uu getitem\uuu方法获得一个OneData对象 class OneData(object): def __init__(self, data): self.data = data class AllData(object): d
AllData
是一种列表或dict,使用\uu getitem\uuu
方法获得一个OneData
对象
class OneData(object):
def __init__(self, data):
self.data = data
class AllData(object):
def __init__(self, database):
with open(database, "r") as f:
data = read(f) # with read a yaml, json or other load function
self._data = [OneData(d) for d in data]
self._names = [data.name for data in self._data]
def __getitem__(self, key):
""" x.__getitem__(y) --> x[y] with y either group number or group name """
if isinstance(key, int):
item = self._data[key - 1]
elif isinstance(key, str):
try:
item = self._pg[self._names.index(key)]
except ValueError:
raise ValueError("%s is not a valid group name." % key)
return item
我想知道如何能够使用AllData
类,而不需要实例化它?(我还想知道这是否是最好的方法)我希望能够使用来自简单导入的数据。不需要实例化这个类,因为它存储最终用户不能修改的数据。因此,所有内容从一开始就包含在类中。例如:
from mymodule import AllData
# use data
AllData[1]
为什么
AllData
是一个类,而不是一个类的列表或实例?为什么不将所有内容都放在OneData
类下?您的AllData
类还有其他方法吗?如果没有,就去掉它,用其中的所有数据初始化一个模块级变量。如何将键与每个单独的数据块关联起来self.data
现在只是一个列表;AllData['foo']
是什么意思?我刚刚更新了AllData
类,以便给出一个\uuuu getitem\uuu
的示例。阅读您的评论,也许我应该在模块中实例化它,从而导入对象?