概念
面向過(guò)程編程:把計(jì)算機(jī)程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行,簡(jiǎn)化程序設(shè)計(jì)。面向過(guò)程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)切割成小塊函數(shù),降低系統(tǒng)的復(fù)雜度。
面向?qū)ο缶幊蹋喊延?jì)算機(jī)程序視為一組對(duì)象集合,每個(gè)對(duì)象都可以接收其它對(duì)象發(fā)來(lái)的消息,并處理這些消息。計(jì)算機(jī)程序的執(zhí)行就是一系列消息在各個(gè)對(duì)象之間的傳遞。
Point:面向?qū)ο缶幊?/h1>
- class Student(object):
// object 是所有類(lèi)最終都會(huì)繼承的類(lèi)
// class Student(object):
- __init__方法
// 通過(guò)該特殊的方法在創(chuàng)建實(shí)例的時(shí)候吧屬性綁定上去
// def __init__(self,name,score):
- 參數(shù)self
// __init__方法的第一個(gè)參數(shù),在__init__方法內(nèi)部將各種屬性綁定到self,self指向創(chuàng)建的實(shí)例本身。
#Summary:
-類(lèi)是創(chuàng)建實(shí)例的模板,而實(shí)例是一個(gè)個(gè)個(gè)具體的對(duì)象,各實(shí)例擁有的數(shù)據(jù)都相互獨(dú)立,互不影響。
-方法是實(shí)例綁定的函數(shù),和普通函數(shù)不同,方法可以直接訪問(wèn)實(shí)例的數(shù)據(jù)。
-在 Python中,實(shí)例的變量名如果以 __ 開(kāi)頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問(wèn),外部不能訪問(wèn)。
封裝
- 在類(lèi)的內(nèi)部定義訪問(wèn)數(shù)據(jù)的函數(shù),這樣就將“數(shù)據(jù)”封裝起來(lái)了。
def print_score(self):
print("%s %s"%(self.name,self.score))
- class Student(object):
// object 是所有類(lèi)最終都會(huì)繼承的類(lèi)
// class Student(object):
- __init__方法
// 通過(guò)該特殊的方法在創(chuàng)建實(shí)例的時(shí)候吧屬性綁定上去
// def __init__(self,name,score):
- 參數(shù)self
// __init__方法的第一個(gè)參數(shù),在__init__方法內(nèi)部將各種屬性綁定到self,self指向創(chuàng)建的實(shí)例本身。
#Summary:
-類(lèi)是創(chuàng)建實(shí)例的模板,而實(shí)例是一個(gè)個(gè)個(gè)具體的對(duì)象,各實(shí)例擁有的數(shù)據(jù)都相互獨(dú)立,互不影響。
-方法是實(shí)例綁定的函數(shù),和普通函數(shù)不同,方法可以直接訪問(wèn)實(shí)例的數(shù)據(jù)。
-在 Python中,實(shí)例的變量名如果以 __ 開(kāi)頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問(wèn),外部不能訪問(wèn)。
def print_score(self):
print("%s %s"%(self.name,self.score))
封裝的另一個(gè)好處是可以為類(lèi)增添新的方法。
訪問(wèn)控制
- 實(shí)例的變量名如果以 __ 開(kāi)頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問(wèn),外部不能訪問(wèn)
- 確保外部代碼不能隨意修改對(duì)象內(nèi)部的狀態(tài),通過(guò)訪問(wèn)限制的保護(hù),使代碼更加健壯。
- 但還是可以通過(guò)在類(lèi)中添加方法來(lái)訪問(wèn)
繼承
??繼承最大的好處是子類(lèi)獲得了父類(lèi)的全部功能。但也可以給子類(lèi)添加方法,當(dāng)子類(lèi)和父類(lèi)存在相同的方法時(shí),子類(lèi)的方法會(huì)覆蓋父類(lèi)的方法。
多態(tài)
- 在繼承關(guān)系中,如果一個(gè)實(shí)例的數(shù)據(jù)類(lèi)型是某個(gè)子類(lèi),那它的數(shù)據(jù)類(lèi)型也可以被看做是父類(lèi)。但是,反過(guò)來(lái)就不行。
- 調(diào)用方只管調(diào)用,不管細(xì)節(jié)
Summary
- 有了繼承,才能有多態(tài)。在調(diào)用類(lèi)實(shí)例方法的時(shí)候,盡量把變量視作父類(lèi)類(lèi)型