python中class用法是什么呢?不知道的小伙伴來看看小編今天的分享吧!
1、class的定義及常用稱呼:
類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。
對象:它是類的實例化。
方法:指類中定義的函數。
2、類對象支持兩種操作:
屬性引用和實例化。
屬性引用的語法:obj.屬性
類實例化的語法:obj = 類名()
類中方法的調用:obj.方法名()
3、舉例:
例1
class student(object): #自定義一個類student
def speak(self): ## 哪個對象調用了這個方法,self就是那個對象;可以把self理解為一個形參
print("%s 說:我今年%s歲" % (self.name, self.age))
john = student() #類student 實例化一個對象john
john.name = "約翰" # 給對象添加屬性
john.age = 19
john.speak() # 調用類中的 speak()方法
此時的輸出為
約翰 說:我今年19歲
例2
class student(object): # 定義構造方法 有init,有別于自定義類
def __init__(self, n, a): #__init__() 是類的初始化方法;它在類的實例化操作后 會自動調用,不需要手動調用;
self.name = n
self.age = a # 設置屬性
def speak(self): # 定義類中的普通方法
print("%s 說:我今年%s歲" % (self.name, self.age))
john = student("約翰",19) #類student 實例化一個對象john
john.speak() # 調用類中的 speak()方法
最后的輸出同上個例子
在python中使用__開頭 并以__結尾的方法,稱之為魔法方法;
init(self) 是類的初始化方法,也稱構造方法,是一種特殊的魔法方法; init(self)在實例化后,會自動調用,而不用手動調用,所以一般把屬性設置在_init__()里;
常用到的魔法方法還有:str(self) 、 del(self)等。
4、類的繼承以及super,self的使用:
子類繼承父類,即子類擁有了父類的屬性和方法。
python中類的初始化都是__init__()。所以父類和子類的初始化方式都是__init__()
但是如果子類初始化時沒有這個函數,那么它便調用父類的__init__();(對應例input1)
如果子類種調用了父類的init,但自己又定義了自己的init,那么就會覆蓋父類的初始化函數,只顯示子類自己的初始化。(對應例input2)
input1:
class Animal(object):
def __init__(self):
self.name = "我是父類"
class Panda(Animal):
def __init__(self):
super().__init__() #使用super的方式來顯示調用父類的__init__()函數
super(Panda, self).__init__() # 第二種super初始化的方式
if __name__=="__main__":
panda = Panda() #實例化Panda
print(panda.name)
output1:
我是父類
input2:
class Animal(object):
def __init__(self):
self.name = "我是父類"
class Panda(Animal):
def __init__(self):
super().__init__()
self.name = "panda"
if __name__=="__main__":
panda = Panda()
print(panda.name)
output2:
panda
2. self和super的區別:
(1) self是首先調用自身的方法如果自身沒有再去父類中找;super是直接從父類中找方法
(2)self是類(可以理解為形參),super是預編譯指令
反正要繼承父類,直接上super就ok了
input3:
class Animal(object):
def __init__(self):
self.name = "我是父類"
def A(self): #父類中的A方法
print("父類的A方法")
class Panda(Animal):
def __init__(self):
super().__init__()
self.myname = "panda"
def A(self): #子類中的A方法
print("子類的A方法")
def B(self):
self.A() #self調用A
super().A() #super調用A
if __name__=="__main__":
panda = Panda()
panda.B() #通過B函數來調用A方法,查看self和super的區別
output3:
子類的A方法 #我們說過self是先從自身找方法,沒有再去父類找
父類的A方法 #而super則是直接從父類中找
以上就是小編今天的分享了,希望可以幫助到大家。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com