python中的類提供了物件導向程式設計的所有基本功能:類的繼承機制允許多個基類,派生類可以覆蓋基類中的任何方法,方法中可以呼叫基類中的同名方法。
語法格式如下:
class classname:. .
.
類物件支援兩種操作:屬性引用和例項化。
屬性引用使用和 python 中所有的屬性引用一樣的標準語法:obj.name。
類物件建立後,類命名空間中所有的命名都是有效屬性名。所以如果類定義是這樣:
#!/usr/bin/python3
class
myclass:
"""乙個簡單的類例項
"""i = 12345
deff(self):
return
'hello world'#
例項化類
x =myclass() #
訪問類的屬性和方法
print("
myclass 類的屬性 i 為:
", x.i)
print("
myclass 類的方法 f 輸出為:
", x.f())
輸出結果;
myclass 類的屬性 i 為: 12345myclass 類的方法 f 輸出為: hello world
類有乙個名為 __init__() 的特殊方法(構造方法),該方法在類例項化時會自動呼叫,像下面這樣:
def __init__(self):self.data =
當然,__init__() 方法可以有引數,引數通過 __init__() 傳遞到類的例項化操作上。例如:
#!/usr/bin/python3
class
complex:
def__init__
(self, realpart, imagpart):
self.r =realpart
self.i =imagpart
x = complex(3.0, -4.5)
print(x.r, x.i) #
輸出結果:3.0 -4.5
self代表類的例項,而非類
類的方法與普通的函式只有乙個特別的區別——它們必須有乙個額外的第乙個引數名稱, 按照慣例它的名稱是 self。
classtest:
defprt(self):
(self)
print(self.__class__)
t =test()
t.prt()
其輸出結果為:
<__main__.test instance at 0x100771878>__main__.test
從執行結果可以很明顯的看出,self 代表的是類的例項,代表當前物件的位址,而 self.class 則指向類。
在類的內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self, 且為第乙個引數,self 代表的是類的例項。
#!/usr/bin/python3
#類定義
class
people:
#定義基本屬性
name = ''
age =0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight =0
#定義構造方法
def__init__
(self,n,a,w):
self.name =n
self.age =a
self.
__weight =w
defspeak(self):
print("
%s 說: 我 %d 歲。
" %(self.name,self.age)) #
例項化類
p = people('
runoob
',10,30)
p.speak()
其輸入結果:
runoob 說: 我 10 歲。
python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。派生類的定義如下所示:
classderivedclassname(baseclassname1):
. .
.
需要注意圓括號中基類的順序,若是基類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢基類中是否包含方法。
#!/usr/bin/python3
#類定義
class
people:
#定義基本屬性
name = ''
age =0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight =0
#定義構造方法
def__init__
(self,n,a,w):
self.name =n
self.age =a
self.
__weight =w
defspeak(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
#覆寫父類的方法
defspeak(self):
print("
%s 說: 我 %d 歲了,我在讀 %d 年級
"%(self.name,self.age,self.grade))
s = student('
ken',10,60,3)
s.speak()
其輸出結果為:
ken 說: 我 10 歲了,我在讀 3 年級
python基礎物件導向 上(入門篇 九)
2.類3.類的定義 4.引數self 5.總結 自己定義乙個類 使用class關鍵字來定義 語法 class 類名 塊 class myclass pass m myclass m是通過myclass建立的物件 m是myclass的例項 m2 myclass m2也是通過myclass建立的物件 m...
Python入門篇(一)
對了,入門篇都是python3.6的,其實只要有其它物件導向的經驗,看一遍就ok了,如果沒有基礎的朋友,可就得多寫幾遍嘍,理解物件的用法,未完待續 一 概念 類 用來描述具有 相同屬性和方法的物件的集合 二 命名方式 1 類名大駝峰 2 方法名小駝峰 3 嚴格區分大小寫 三 類的定義 class c...
Python 爬蟲入門篇(一)
注 本文資料來自 python網路爬蟲技術從入門到實踐 第一步 獲取網頁 基礎技術 requests urllib 和selenium 模擬瀏覽器 高階技術 多執行緒抓取 登入抓取 突破ip抓取和伺服器抓取 第二步 解析網頁 基礎技術 re正規表示式 beautifulsoup和lxml 高階技術 ...