python的三個特性:封裝、繼承、多型
封裝:將相關功能封裝到乙個類
將資料封裝到乙個物件(__init__)
#繼承:繼承的目的是為了復用1、功能的封裝
class
loy2:
deftestmethod1(self, name, data, gender):
data = '
%s%s%stest1
' %(name, data, gender)
(data)
deftestmethod2(self, name, data, gender):
data = '
%s%s%stest2
' %(name, data, gender)
(data)
deftestmethod3(self, name, data, gender):
data = '
%s%s%stest3
' %(name, data, gender)
(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)
(data)
deftestmethod2(self):
data = '
%s%s%stest2
' %(self.n1, self.n2, self.n3)
(data)
deftestmethod3(self):
data = '
%s%s%stest3
' %(self.n1, self.n2, self.n3)
(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以上就是個人對於python基礎三大特性的了解。如有問題,歡迎指正。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
'''
物件導向三大特性
什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...
物件導向三大特性
0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...
物件導向三大特性
封裝 oo將萬物都視為 物件 object 任何物件都具有特性和行為。我們將其特性稱為 成員變數 membervarible 將其行為稱之為 成員函式 member function 被封裝的特性只能通過特定的行為去訪問。好處 良好的封裝可以降低耦合度 類的內部可以自由修改 類具有對外的清晰介面。繼...