1、封裝:將數據的屬性和行為(方法)包裝到類對象中,在方法內部對屬性進行操作,在類對象的外部調用方法,這樣無需關心方法內部的具體實現細節,從而隔離了復雜度 2、繼承:提高代碼的復用性 .如果一個類沒有繼承任何類,默認繼承object .python支持多繼承 .定義子類時,必須在起構造函數中調用父類的構造函數 3、多態——多種形態,指的是即便不知道一個變量所引用的對象到底是什麼類型,仍然可以通過這個變量調用方法,在運行過程中根據變量所引用的對象類型,動態決定調用那個對象中的方法
1、面向對象_封裝
# 面向對象的三大特征:封裝、繼承、多態 # 封裝:將數據的屬性和行為(方法)包裝到類對象中,在方法內部對屬性進行操作,在類對象的外部調用方法, # 這樣無需關心方法內部的具體實現細節,從而隔離了復雜度 class person: def __init__(self,age): # self.name=name self.age=age def start(self): print('苦逼的人類又要開始打工的一天了') per=person('加油加油') per.start() print(per.age) # # 在python中沒有專門的修飾符用於屬性的私有,如果改屬性不希望在類對象中被外部訪問,前面使用兩個‘_’即可 class Student: def __init__(self,name,age): self.name=name self.__age=age # 不想被類的外部調用,前面加__ def show(self): # 定義類 print('姓名:',self.name,'年齡:',self.__age) stu=Student('俞敏洪',30) # 創建對象 stu.show() # 在類的外部使用name,age # print(stu.name) # print(stu.age) # 不希望被使用 # print(stu._Student__age)
2、面向對象_繼承
# 面向對象的三大特征:封裝、繼承、多態 # 繼承:提高代碼的復用性 # .如果一個類沒有繼承任何類,默認繼承object # .python支持多繼承 # .定義子類時,必須在起構造函數中調用父類的構造函數 # 定義一個person父類 class Person(): def __init__(self,name,age,height,weight): self.name=name self.age=age self.height=height self.weight=weight def info(self): print(self.name,self.age,self.height,self.weight) # 再定義一個student類 class Student(Person): def __init__(self,name,age,height,weight,stu_no): super().__init__(name,age,height,weight) # 使用super()調用父類init裡面的屬性 self.stu_no=stu_no # 再定義一個教師類 class Teacher(Person): def __init__(self,name,age,height,weight,TeacherOfYear): super().__init__(name,age,height,weight) self.t_yes=TeacherOfYear # 創建學生類和教師類的對象 stu=Student('俞敏洪',30,'175cm','60kg',1001) Teacher=Teacher('馬雲',30,'175cm','60kg',10) stu.info() Teacher.info() # python中還可以多繼承 class A(object): pass class B(object): pass class C(A,B): # 多繼承 pass
1、面向對象_多態
# 面向對象的三大特征:封裝、繼承、多態 # 多態——多種形態,指的是即便不知道一個變量所引用的對象到底是什麼類型,仍然可以通過這個變量調用方法, # 在運行過程中根據變量所引用的對象類型,動態決定調用那個對象中的方法 # class animal(object): def eat(self): print('所有動物都要吃東西') class dog(animal): def eat(self): print('狗會吃骨頭') class pig(animal): def eat(self): print('豬會吃甜點') class person(object): def eat(self): print('人什麼都要吃!') def fun(person): # 定義一個函數 person.eat() # def fun(animal): # 多態,只要這個方法裡面有共同的屬性,和他的父類沒有關系 # animal.eat() # def fun(object): # object.eat() fun(dog()) fun(pig()) fun(person())