要點:
不要在字典裡嵌套字典、長元組,以及用其他内置類型構造的複雜結構
namedtuple能夠實作出輕量級的容器,以存放不可變的資料,而且将來可以靈活地轉化為普通的類
如果發現用字典來維護内部狀态的那些代碼已經越來越複雜了,那麼就應該考慮改用多個類來實作
直接上代碼
from collections import namedtuple, defaultdict
Grade = namedtuple('Grade', ('score', 'weight'))
class Subject:
def __init__(self):
self._grades = []
def report_grade(self, score, weight):
self._grades.append(Grade(score, weight))
def average_grade(self):
total, total_weight = 0, 0
for grade in self._grades:
total += grade.score * grade.weight
total_weight += grade.weight
return total / total_weight
class Student:
def __init__(self):
self._subjects = defaultdict(Subject)
def get_subject(self, name):
return self._subjects[name]
def average_grade(self):
total, count = 0, 0
for subject in self._subjects.values():
total += subject.average_grade()
count += 1
return total / count
class Gradebook:
def __init__(self):
self._students = defaultdict(Student)
def get_student(self, name):
return self._students[name]
if __name__ == '__main__':
book = Gradebook()
albert = book.get_student('Albert Einstein')
math = albert.get_subject('Math')
math.report_grade(75, 0.05)
math.report_grade(65, 0.15)
math.report_grade(70, 0.80)
gym = albert.get_subject('Gym')
gym.report_grade(100, 0.40)
gym.report_grade(85, 0.60)
print(albert.average_grade())
請相信自己 當我們迷茫,懶惰,退縮的時候
我們會格外的相信命運
相信一切都是命中注定
而當我們努力拼搏,積極向上時
我們會格外的相信自己
是以命運是什麼呢?
它是如果你習慣它
那它就會一直左右你
如果你想掙脫它
那它就成為你的阻礙
可如果你打破了它
那它就是你人生的墊腳石!
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,部落客在此感謝!