1. 程式人生 > >Python面向物件、繼承和多型

Python面向物件、繼承和多型

面向物件變成的基本思想:類和例項

用於定義抽象型別---------------------人-----------------------------class  Person(object):------------------資料封裝class Person(object):

                                                                                                    pass                                                                 def __init__(self,name):

                                                                                                                                                                                 self.name = name

例項根據累的定義被創建出來---------小明、小紅-----------------p1 = Person()------------------------------p1 = Person('xiaoming')

                                                                                                p2 = Person()                                    p2 = Person('xiaohong')

(1)類關鍵字class,類名以大寫字母開頭,建立例項使用類名+()

(2)類屬性只調用一次(和例項化多少次沒有關係);__init__()方法中的屬性是例項屬性,每次例項化一次就呼叫一次

(3)例項小明、小紅除了地址不一樣意外,沒有什麼其他不同,現實世界中區分小明、小紅要依靠他們各自的名字、性別、生日等屬性,所以可以在類中的__init__方法中新增屬性name,在例項化時輸入引數,然後取值p1.name就可以了

(4)__init__()方法的第一個引數必須是self,後續引數自由指定,實際情況需要傳入什麼引數就定義什麼引數,和定義函式沒有任何區別

(5)__init__()方法中,只有以雙下劃線開頭__xxx的屬性不能直接被外部訪問,預定義屬性通常用__xxx__表示,作為預留欄位

(6)類是模板,例項是根據模板建立的物件,所以物件建立完以後,無論在外部怎麼改變物件的屬性和方法,模板中的資料是完全不受影響的。

(7)例項屬性每個例項各自擁有,互相獨立,模板屬性有且僅有一份,所有例項共同擁有

(8)模板屬性和例項屬性重名時,例項屬性優先順序高(注意:一般例項屬性方法和模板屬性方法名稱不要定義一樣)

(9)私有類屬性和例項屬性不能在外部用類和例項直接訪問,但是可以在內部__init__方法中print私有類屬性Person.__count和例項屬性self.__name,這樣就可以訪問了

(10)例項和類中的屬性呼叫方式:例項p1.屬性,,例項p1.方法,,類Person.屬性,,類Person.方法

在class中第一的全部是例項方法,例項方法第一個引數self是實力本身

(11)例項方法:def get_grade(self):,第一個引數為self,方法中可以直接呼叫例項屬性,,呼叫例項方法必須在例項上呼叫

(12)類方法:@classmethod,引數為cls表示類本身,類方法在類上呼叫