Python是一種面向?qū)ο蟮母呒?jí)語(yǔ)言,因此類對(duì)于Python非常重要。類是一個(gè)空間,在該空間中變量(屬性/方法)分別存儲(chǔ)。運(yùn)算符' . '用于調(diào)用類的屬性和方法。類是事務(wù)類的抽象,它不是真的存在,它描述了事務(wù)的共性。在搜索類屬性時(shí),python首先找到實(shí)例,然后在實(shí)例中找到屬性,當(dāng)找不到時(shí),它將在類內(nèi)部進(jìn)行搜索。那么如何使用Python的類? 優(yōu)勢(shì)有哪些?下面讓我們一起來(lái)詳細(xì)了解一下吧。
如何使用Python的類?
1.在Python中,定義類是通過(guò)class關(guān)鍵字來(lái)實(shí)現(xiàn)的:
class Student(object):
Pass
class 后面緊接著是類名,即Student.類名通常采用單詞首字母大寫的形式命名,比如 StudentCore。
(object) 表示該類是從哪個(gè)類繼承來(lái)的。如果沒(méi)有合適的繼承類,則通常使用 object 類,這是所有類都會(huì)繼承的類。
2.實(shí)例化一個(gè)類是通過(guò)在類名后面加小括號(hào)“()”來(lái)實(shí)現(xiàn)的:
pupil=Student ()
“小學(xué)生”是“學(xué)生”這個(gè)的一個(gè)實(shí)例。所謂實(shí)例,可以將其理解為類的化身。類不能被直接使用,只能先將其實(shí)例化,然后用實(shí)例代表類,進(jìn)而調(diào)用類中的方法處理數(shù)據(jù)。那么實(shí)例是怎么代表類的呢?在定義類及其方法時(shí),有一個(gè)參數(shù)叫self, 它就是串聯(lián)實(shí)例與類之間的關(guān)鍵參數(shù),可以簡(jiǎn)單地理解為“self=實(shí)例名”。
類的下面有屬性和方法??梢詫傩岳斫鉃殪o態(tài)的數(shù)據(jù),將方法理解為動(dòng)態(tài)的處理函數(shù)。比如,在下面的代碼中定義了“學(xué)生”類,其中_ _init_ _是屬性,print_score 是方法。
#-*-coding:utf-8-*
Class Student (object) :
def _ _ init_ _ (self,name,score) :
self.name= name
self.score=score
def print_score (self) :
print ('%s: %s'% (self. _ _name,self. _ _acore) )
3.實(shí)例化上面的類,然后分析Python 如何利用實(shí)例化類調(diào)用類中的方法。
完整的實(shí)例化類與調(diào)用過(guò)程如下:
pupil=student (name='lilei',score=99)
pupil.print_score ()
按照前面的說(shuō)法,self=實(shí)例名,那么 pupil=Student (name='lilei',score=99) , 實(shí)例化類的第一步是執(zhí)行 _ _init_ _ 語(yǔ)句,即 Student (self='pupil',name='lilei',score=99) , 則可知pupil.name='lilei',pupil.score=9.實(shí)例化類的第二步是執(zhí)行 pupil.print_score () 語(yǔ)句,調(diào)用實(shí)例的方法就是調(diào)用類的方法,而這個(gè)方法是按照格式打印出
pupil.name:pupil.score,mlilei: 99。
Python類優(yōu)勢(shì)有哪些?
1.類的訪問(wèn)限制
所謂類的訪問(wèn)限制,即在類的外部不能直接調(diào)用類中的數(shù)據(jù)。在 Python 中,在變量前加“_ _”可將變量置為私有變量,使其只能在類中被使用,不能被類之外的其他函數(shù)(方法)調(diào)用。下面代碼中的name 參數(shù)表示的就是私有變量。
#-*-coding:utf-8-*-
#_ _author_ _='大嬸N72’
class Student (object) :
def _ _init_ _(self,name,score) :
self._ _name= name
self.score= score
def print_score (self) :
print ('%s: %S'% (self._ _name,self._ _score) )
MeiMei=Student ('hello', 99)
print (MeiMei.score)
print (MeiMei. _ _name)
代碼的運(yùn)行結(jié)果很好地佐證了加了“_ _”的參數(shù)是不能被調(diào)用的,沒(méi)加“_ _”的參數(shù)是可以直接被調(diào)用的,如下所示:
C:Python36python3. exe F:/Autotest_interface_demo/test. py
99
Traceback (most recent call last):
File "F:/Autotest interface demo/test.py”, line 12, in
print (MeiMei._name)
AttributeError: ' Student' object has no attribute'__name’
Process finished with exit code 1
2.類的繼承
所謂“繼承”, 從字面上看很好理解:如果一個(gè)類繼承了另外一個(gè)類,則這個(gè)類就有了被繼承的類的所有方法和屬性。我們可以直接使用這些方法和屬性,無(wú)須再單獨(dú)寫。下面舉一個(gè)例子來(lái)解釋什么是繼承。類的基本定義如下:
# -*- coding:utf-8 -*-
# _ _author_ _=‘大嬸N72’
# 父類
class Parent (object) :
def print_self (self) :
return “我是父類”
# 子類繼承父類
class Student (Parent) :
def_ _init_ _ (self,name,score) :
self. _ _name= name
self.score=score
def print_score (self) :
print ('%s: %s'% (self. _ _name,self. _ _score) )
MeiMei=Student ('hello', 99)
print (MeiMei.score)
#直接在子類中使用父類的方法
print (MeiMei.print_self ()
在上面的例子中,子類 Student 繼承了父類 Parent.方法是在類名稱后面的小括號(hào)中加上父類的名稱。子類繼承了父類,則有了父類 Parent 的方法 print_self, 從而可以直接在自己的實(shí)例名中使用。
3.類的多態(tài)
如果子類繼承了父類,但是又想改變父類的方法,則這時(shí)無(wú)須修改父類的方法,只需要在子類中添加相同的方法名就可以起到覆蓋的作用,這就是多態(tài)。
# -*- coding:utf-8 -*-
# _ _author_ _='大嬸N72'
#父類
class Parent (object) :
def print_self (self) :
return"我是父類"
#子類繼承父類
class Student (Parent) :
def _ _init_ _ (self,name,score) :
self. _ _name= name
self.score=score
def print_score (self) :
print ('%s: %S'% (self. _name,self. _ _score) )
def print_self (self) :
return"我是子類"
MeiMei=Student ('hello', 99)
print (MeiMei.score)
#子類的方法覆蓋父類方法
print (MeiMei.print_self () )
以上即是關(guān)于如何使用Python的類以及優(yōu)勢(shì)有哪些的全部?jī)?nèi)容介紹,想了解更多關(guān)于Python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。