本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 22 条:尽量用辅助类来维护程序的状态,而不要用字典和元组。
字典维护简单的对象动态
简单的例子,为学生建立成绩字典,记录姓名和多个分数,计算平均分,代码如下:
class SimpleGradebook(object):
def __init__(self):
self._grades = dict()
def add_student(self, name):
self._grades[name] = []
def report_grade(self, name: object, score: object) -> object:
self._grades[name].append(score)
def average_grade(self, name):
grades = self._grades[name]
return sum(grades) / len(grades)
if __name__ == '__main__':
book = SimpleGradebook()
book.add_student("Ted")
book.report_grade("Ted",100)
book.report_grade("Ted", 80)
print(book.average_grade("Ted"))
该代码中维护了字典,键是学生名字,值是成绩列表
字典嵌套维护复杂些的数据
加大难度,现在要记录学科信息:
class BySubjectGradebook(object):
def __init__(self):
self._grades = dict()
def add_student(self, name):
self._grades[name]