溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Python中使用類

發(fā)布時間:2021-05-26 09:19:51 來源:億速云 閱讀:386 作者:Leah 欄目:開發(fā)技術

如何在Python中使用類?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、類的定義和使用

在C++中,類是“結構體”的衍生。在Python中,類作為一個完全獨立的概念出現。

1.類的定義:

class ClassName:
	......

2.初始化函數和self參數:【非常重要?。。?!】

def __init__(self,a,b,......):
	self.變量1=a
	self.變量2=b
	......

①Python在初始化函數里定義“變量”。
當我們要使用這個類的時候,可以直接對初始化函數里的變量賦值。
當然,可以不寫形參a,b等等,直接給變量賦值。
②self參數表征這個類。
在類中寫函數(即方法)時,都必須傳入self參數。之后會舉例說明。

【由此,我們可以發(fā)現,python中的init初始化函數與C++中的構造函數如出一轍,其原理其實是一樣的】

3.外部變量使用類:即調用類的初始函數

class A:
	def __init__(self,p,q):
		self.a=p
		self.b=q
		
example=A(1,2)  #調用初始化函數,傳入形參p=1,q=2,此時標明example使用了A類
print(A.a)      #輸出1
print(A.b)      #輸出2

4.限制變量的適用范圍:私有or公有

我們知道,C++類中的變量有public、protected和private三種。Python中當然也有,只是書寫方式不同。
特別注意,private變量“類內”和“類外”的調用方法是不同的。
在類外獲取private變量值的方法有兩種:

①通過特定“接口”:即調用類內函數方法,在類內通過self實現對private變量的使用
②通過特殊方法:example._ ClassName(類名) __var(變量)

如果直接無腦調用private,程序出現AttributeError錯誤。當然也不能對直接對private變量進行該值和賦值的操作。

class A:
	def __init__(self,a,b,c):
		self.one=a      #沒有修飾,等價于public
		self._two=b     #加一條下劃線,等價于protected
		self.__three=c  #加兩條下劃線,等價于private
	def get_all(self):
		print(self.one)     #類內的調用方式:格式與定義相同
		print(self._two)
		print(self.__three)
		
example=A(1,2,3)
example.get_all()         #通過“接口”獲取private值
print(example._A__three)  #通過特殊方法獲取private值

以上就是基本知識,我們通過一個示例程序加深印象:

class Human:
    def __init__(self,name,height,weight,sex):
        self.name=name
        self._height=height
        self.__weight=weight
        self.sex=sex
    def get_info(self):
        print(self.name)
        print(self._height)   #類內部調用protected變量,加一個下劃線
        print(self.__weight)  #類內部調用private變量,加兩個下劃線
        print(self.sex)
    def get_weight(self):   #接口:通過方法獲得private變量值,相當于一個通道
        print("His(Her) weight is:")
        print(self.__weight)

DIONA=Human("diona",'150cm','50kg','female(♀)')
#通過類的內部函數訪問變量并輸出,可以正常使用private和protected屬性的變量。
DIONA.get_info()

#height為protected屬性,在類外調用時,要加一個下劃線
print(DIONA._height)
#weight為private屬性,在類外調用時,要用特殊的方法:xxx._Classname(類名)__varname(變量名)
print(DIONA._Human__weight)

#使用接口獲得weight的值
DIONA.get_weight()

二、類的方法

類的方法分為“共有方法”、“私有方法”、“靜態(tài)方法”和“類方法”。本文詳細講述后兩者。

1.靜態(tài)方法:
又稱“非實例方法”,一般與實例無關的方法,用于其他方法順帶調用。使用之前最好用@ staticmethod 注釋

2.類方法:
接受“類屬性”的方法。至少要接受一個形參cls,但調用時不需要為cls傳遞值。最好用@ classmethod 注釋。
p.s:何為“類屬性”?就是不寫在init函數中,直接寫在類中的變量。

class A:
	one=0  #這個one是“類屬性”
	def __init__(self):
		self.two=0   #這個two是“self屬性”

3.實例方法:
就是使用self屬性的一般方法。上面“一”中所寫到的方法都是實例方法。

4.外部調用規(guī)則:
①實例方法:只能使用實例名。
②靜態(tài)方法和類方法:可以使用實例名,也可以使用類名。

程序實例:

class Student:
    _number=0    #這個number是類屬性,直接定義在類中,必須用類方法去調用
    def __init__(self,name,uid):
        self._name=name
        self._uid=uid
        Student._number+=1     #每初始化一次,學生人數加1
        #另外,調用類屬性時,使用類名:ClassName.varname
        
    #實例方法:對self定義的變量操作
    def get_name(self):
        print(self._name)
    
    #靜態(tài)方法:(非實例方法)一般與實例無關的方法,用于其他方法順帶調用。
    @ staticmethod 
    def pls(a,b):
        return a+b;
    
    @ classmethod
    #類方法:至少要接受一個形參cls,但調用時不需要為cls傳遞值
    def get_number(cls):   
        print(cls._number)

lwc=Student('lwc','20009100132')
gtj=Student('gtj','20009100128')
wxm=Student('wxm','20018900232')

#外部調用實例方法,使用實例名。不能用類名調用實例方法。
lwc.get_name()

#外部調用類方法,使用類名或者實例名。
Student.get_number()
lwc.get_number()

三、類的屬性

類的屬性通俗地講就是“類中存放的變量”,一般有“類屬性”和“self屬性”兩種。
類的屬性在“二”中已經講過,還有一個叫“動態(tài)增加屬性”和“動態(tài)刪除屬性”的內容,實際運用較少,在此略講了。

四、類中常用特殊方法

Python類有大量的特殊方法。之前講的初始化函數就是“構造函數”,就是一個特殊方法。與其對應的“析構函數”__ deal __( )也是特殊方法。
下面羅列了大量的特殊方法:

如何在Python中使用類

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI