17物件導向 三大特性

2022-03-12 21:46:27 字數 2912 閱讀 2017

python的三個特性:封裝、繼承、多型

封裝:將相關功能封裝到乙個類

將資料封裝到乙個物件(__init__)

#

1、功能的封裝

class

loy2:

deftestmethod1(self, name, data, gender):

data = '

%s%s%stest1

' %(name, data, gender)

print

(data)

deftestmethod2(self, name, data, gender):

data = '

%s%s%stest2

' %(name, data, gender)

print

(data)

deftestmethod3(self, name, data, gender):

data = '

%s%s%stest3

' %(name, data, gender)

print

(data)

obj1 =loy2()

obj1.testmethod1('別人

', '

明天', '上班'

)obj1.testmethod2('別人

', '

明天', '上班'

)obj1.testmethod3('別人

', '

明天', '上班'

)#2、優化版本(引數的打包)

class

loy:

def__init__

(self, a, b, c):

self.n1 =a

self.n2 =b

self.n3 =c

deftestmethod1(self):

data = '

%s%s%stest1

' %(self.n1, self.n2, self.n3)

print

(data)

deftestmethod2(self):

data = '

%s%s%stest2

' %(self.n1, self.n2, self.n3)

print

(data)

deftestmethod3(self):

data = '

%s%s%stest3

' %(self.n1, self.n2, self.n3)

print

(data)

obj = loy('

我自己', '

今天', '

去打牌'

)obj.testmethod1()

obj.testmethod2()

obj.testmethod3()

繼承:繼承的目的是為了復用

多繼承:

不同於其他語言,在python中,乙個派生類可以繼承多個基類,多繼承(先找左,再找右),多繼承可以提高復用性

class

base1:

deff1(self):

print('

base1.f1')

deff2(self):

print('

base1.f2')

class

base2:

deff1(self):

print('

base2.f1')

deff2(self):

print('

base2.f2')

deff3(self):

print('

base2.f3')

self.f1()

class

foo(base1, base2):

deff0(self):

print('

foo.f0')

self.f3()

obj =foo()

obj.f0()

以上**列印結果為

當執行obj物件的f0方法時,首先在本身的foo類中尋找f0列印第一行。然後f0中呼叫了f3,f3在foo類中沒有,然後在繼承

的base1類中找f3,沒找到。然後在base2類中找f3。列印第二行。然後f3呼叫了f1(注意:此時self.f3()中的self指向依舊是obj)。

然後foo類中沒有找到f1,然後在base1類中找到,列印第三行,至此結束。

多型:# 關於多型,網上的說法眾說紛紜,google了半天。發現大佬們說的都過於抽象。鑑於我自己還不是個老油條。後續醍醐灌頂之後再補充。

多種形態或者多種狀態,多型可以增加**的靈活度。

鴨子模型:在鴨子型別中,關注的不是物件的型別本身,而是它是如何使用的

class

base(object):

deffun(self):

print('

這是乙個基類')

class

foo(base):

deffun(self):

base.fun(self)

print('

這是派生類1')

class

foo2(base):

deffun(self):

base.fun(self)

print('

這是派生類2')

a =base()

b =foo()

c =foo2()

a.fun()

b.fun()

c.fun()

'''列印結果如下:

這是乙個基類

這是乙個基類

這是派生類1

這是乙個基類

這是派生類2

'''

以上就是個人對於python基礎三大特性的了解。如有問題,歡迎指正。

物件導向三大特性

什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...

物件導向三大特性

0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...

物件導向三大特性

封裝 oo將萬物都視為 物件 object 任何物件都具有特性和行為。我們將其特性稱為 成員變數 membervarible 將其行為稱之為 成員函式 member function 被封裝的特性只能通過特定的行為去訪問。好處 良好的封裝可以降低耦合度 類的內部可以自由修改 類具有對外的清晰介面。繼...