超級無敵乾貨每日18:00推送給你!!!
一分鐘學python| 物件導向(上)這次接著上一次的內容繼續學習python的物件導向
類方法在類的內部,使用def關鍵字來定義乙個方法,與一般函式定義有幾點不同
類方法必須包含引數self, 且為第乙個引數,self 代表的是類的例項。
方法的呼叫需要例項化類,並以"例項名.方法名(引數列表)"的形式進行呼叫
必須整體進行乙個單位的縮排
以下為**例項
#類定義
class people:
#定義基本屬性
name = ''
age = 0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight = 0
#定義構造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 說: 我 %d 歲。" %(self.name,self.age))
# 例項化類
p = people('ming',10,30)
p.speak()
執行以上程式輸出結果為:
ming 說: 我 10 歲。
繼承
python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。派生類的定義如下所示:
class derivedclassname(baseclassname1):..
.
baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:
class derivedclassname(modname.baseclassname):
#類定義
class people:
#定義基本屬性
name = ''
age = 0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight = 0
#定義構造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 說: 我 %d 歲。" %(self.name,self.age))
#單繼承示例
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#呼叫父類的構函
people.__init__(self,n,a,w)
self.grade = g
#覆寫父類的方法
def speak(self):
print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
s = student('ken',10,60,3)
s.speak()
執行以上程式輸出結果為:
ken 說: 我 10 歲了,我在讀 3 年級
多繼承
python同樣有限的支援多繼承形式。多繼承的類定義形如下例:
class derivedclassname(base1, base2, base3):..
.
需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是否包含方法。
#類定義
class people:
#定義基本屬性
name = ''
age = 0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight = 0
#定義構造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 說: 我 %d 歲。" %(self.name,self.age))
#單繼承示例
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#呼叫父類的構函
people.__init__(self,n,a,w)
self.grade = g
#覆寫父類的方法
def speak(self):
print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
#另乙個類,多重繼承之前的準備
class speaker():
topic = ''
name = ''
def __init__(self,n,t):
self.name = n
self.topic = t
def speak(self):
print("我叫 %s,我是乙個演說家,我演講的主題是 %s"%(self.name,self.topic))
#多重繼承
class sample(speaker,student):
a =''
def __init__(self,n,a,w,g,t):
student.__init__(self,n,a,w,g)
speaker.__init__(self,n,t)
test = sample("tim",25,80,4,"python")
test.speak() #方法名同,預設呼叫的是在括號中排前地父類的方法
執行以上程式輸出結果為:
我叫 tim,我是乙個演說家,我演講的主題是 python
我是kuls
無套路領取原創django、flask全套教程
⬇️
一分鐘sed入門(一分鐘系列)
1.簡介 sed是一種行編輯器,它一次處理一行內容。2.sed呼叫方式 sed options command file s sed options f scriptfile file s 第一種直接在命令列中執行,第二種把命令寫到了指令碼中,二者無本質區別。示例 1 列印hello.txt的內容 ...
一分鐘學awk夠用
1.什麼是awk 1 aho weinberger kernighan三位發明者名字首字母 2 乙個行文字處理工具 2.awk基本原理 2.1原理 逐行處理檔案中的資料 2.2語法 awk pattern 說明 1 單引號 是為了和shell命令區分開 2 大括號 表示乙個命令分組 3 patter...
一分鐘看懂mysql 一分鐘,看懂易貨
從20世紀80年代開始,易貨公司在美國加拿大 澳大利亞等國興起,成為這些國家減少現金用量 增加銷售 減少庫存 開發新客戶 開闢新市場 促進經濟發展的重要產業。也成為了企業消化庫存商品 剩餘生產能力 無形資產的有效方式和在遭遇資金瓶頸時的新選擇。2015年以來,中國線下易貨店開始了矇眼狂奔,在河南南陽...