輕松學會面向對象第7篇---類可以形象的描述數(shù)據之間的關系
不考慮特殊情況,一個班主任帶一個班級,這位班主任老師與學生之間就建立起了一對多的關系。
如果不用面向對象,你難以用代碼來描述他們之間的關系。
類,是一種約定,是對內容的約定,對關系的約定,對行為的約定。在沒有實例被創(chuàng)建出來之前,僅僅通過約定,就能夠讓你對數(shù)據有一個非常全面且形象的理解。
class Student():
def __init__(self, name, yw_score, sx_score):
self.name = name # 姓名
self.yw_score = yw_score # 語文分數(shù)
self.sx_score = sx_score # 數(shù)學分數(shù)
self.teacher = None # 老師
class Teacher():
def __init__(self, name):
self.name = name # 姓名
self.students = [] # 學生
先不要急著考慮如何使用這兩個類,這不是本文的重點。本文的重點是向你介紹類如何描述數(shù)據之間的關系。
類Student定義了一個teacher屬性,而類Teacher里定義了一個students屬性,類型是列表,結合現(xiàn)實中老師與學生的關系,你應當已經猜到,這兩個屬性將被賦值特定的對象。
stu = Student('小明', 98, 99)
teacher = Teacher('張老師')
stu.teacher = teacher
teacher.students.append(stu)
print(stu.teacher.name)
print(teacher.students)
在現(xiàn)實中,你可以通過一個學生找到他的老師,也可以通過一個老師了解到他的學生。
通過面向對象技術,在代碼構建出的虛擬邏輯世界中,你仍然可以通過學生找到老師,通過老師找到學生。
用面向對象的方式可以更好的來描述具體的世界,也就是建模。
類讓原本抽象的代碼,邏輯,概念,都具象化了,你只需要將類的描述與現(xiàn)實世界中對應的事物進行關聯(lián),就可以自然且順暢的理解代碼意圖。
反過來,當你想用代碼去完成某件事情時,就可以先思考,是否應當先定義一個或者幾個類,來描述或者定義你想做的事情。
評論
圖片
表情
