封裝是指把數(shù)據(jù)和函數(shù)封裝成為一個對象,也就是創(chuàng)建一個名字空間,通過這個名字空間引用這些數(shù)據(jù)和函數(shù),這就是定義對象、聲明對象、使用對象。類的定義就是定義對象擁有的屬性和方法,類的實例化就是聲明這個類的一個對象,訪問對象的屬性和方法就是使用這個對象。
# 定義對象, 定義類class Person():def __init__(self, name, age):# 定義對象的屬性self.name = nameself.age = age# 定義對象方法def speak(self, word):print(f'{self.name}說:’, word)# 聲明對象,類的實例化p = Person(‘張三’, 18)# 使用對象,調(diào)用對象方法p.speak(‘hello, world!’)
繼承是指定義對象時復用已有對象的代碼,此時已有對象稱為基礎類,新對象稱為擴展類。通過繼承機制,新對象不但復用了其它對象的屬性和方法,并且在這個基礎上重新定義該對象專有的屬性和方法。
class Teacher(Person):def __init__(self, name, age):super().__init__(name, age)# 定義新屬性self.teaching = ”# 定義新方法def teach(self, teaching):self.teaching = teachingself.speak(self.teaching)# 覆蓋已有方法def speak(self, word):print(f’老師{self.name}教授:{self.teaching}’)class Student(Person):def __init__(self, name, age):super().__init__(name, age)self.knowledge = ”def learn(self, teacher):self.knowledge = teacher.teachingself.speak(self.knowledge)def speak(self, word):print(f’學生{self.name}學習:{self.knowledge}’)t = Teacher(‘張三’, 32)s = Student(‘李四’, 10)t.teach(‘知識就是力量!’)s.learn(t)
多態(tài)是指對象繼承時,重定義基礎對象的方法,此時,不同擴展對象調(diào)用相同方法時呈現(xiàn)不同的結果,因此叫作多態(tài)性。如上述代碼中老師和學生對象都調(diào)用speak方法但輸出卻不同。