Python 如何编写容器类并导入实例化对象?

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

我想构建一个类来存储数据集合。这些数据是从结构化文件(如yaml、json或xml)中读取的。。。他们不应该改变。我写了两门课。第一个描述数据的一个元素,另一个描述整个数据。实际上,类
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
的示例。阅读您的评论,也许我应该在模块中实例化它,从而导入对象?