我想构建一个类来存储数据集合。该数据是从结构化文件中读取的,例如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]