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

时间:2017-05-30 22:13:49

标签: python module

我想构建一个类来存储数据集合。该数据是从结构化文件中读取的,例如yaml,json或xml ......并且它们不应该更改。我写了两节课。第一个描述数据的一个元素,另一个描述整个数据。实际上,类AllData是一种带有__getitem__方法的列表或词典,用于获取一个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]

0 个答案:

没有答案