您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python之class類和方法怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python之class類和方法怎么使用”吧!
類(Class):用來描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類的實(shí)例。
方法:類中定義的函數(shù)。
類的構(gòu)造方法__init__():類有一個(gè)名為 init() 的特殊方法(構(gòu)造方法),該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用。
實(shí)例變量:在類的聲明中,屬性是用變量來表示的,這種變量就稱為實(shí)例變量,實(shí)例變量就是一個(gè)用 self 修飾的變量。
實(shí)例化:創(chuàng)建一個(gè)類的實(shí)例,類的具體對(duì)象。
繼承:即一個(gè)派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個(gè)派生類的對(duì)象作為一個(gè)基類對(duì)象對(duì)待。例如,有這樣一個(gè)設(shè)計(jì):一個(gè)Dog類型的對(duì)象派生自Animal類,這是模擬"是一個(gè)(is-a)"關(guān)系(例圖,Dog是一個(gè)Animal)。
python的class(類)相當(dāng)于一個(gè)多個(gè)函數(shù)組成的家族,如果在這個(gè)Myclass大家族里有一個(gè)人叫f,假如這個(gè)f具有print天氣的作用,那么如果有一天我需要這個(gè)f來print一下今天的天氣,那么我必須叫他的全名MyClass.f才可以讓他給我print,即在調(diào)用他的時(shí)候需要帶上他的家族名稱+他的名稱。
屬性:屬性就是在這個(gè)類里的變量。如果變量是物品,那么不同的屬性就是這個(gè)大家族里不同的物品
方法:方法就是在這個(gè)類里的函數(shù)。如果函數(shù)是人,那么不同的方法就是這個(gè)大家族里不同的人。
MyClass實(shí)例:
#Myclass家族,但是這個(gè)家族只有一個(gè)人f class MyClass: """一個(gè)簡(jiǎn)單的類實(shí)例""" i = 12345 def f(self): return 'hello world' # 實(shí)例化類 x = MyClass() # 訪問類的屬性和方法 print("MyClass 類的屬性 i 為:", x.i) #家族x + 物品名i print("MyClass 類的方法 f 輸出為:", x.f()) #家族x + 人名f
輸出結(jié)果:
__init__()
假如init()也是人,但是他是家族和外界聯(lián)絡(luò)員,當(dāng)外界的人想調(diào)用自己家族的人,就必須要先告訴他,所以只要家族的人被調(diào)用,那么init()就會(huì)被先執(zhí)行,然后由他去告訴那個(gè)被調(diào)用的人,執(zhí)行被調(diào)用的。
init()實(shí)例:
class Complex: def __init__(self, realpart, imagpart): #必須要有一個(gè)self參數(shù), self.r = realpart self.i = imagpart x = Complex(3.0, -4.5) print(x.r, x.i) # 輸出結(jié)果:3.0 -4.5
輸出結(jié)果:
self
在類的內(nèi)部,使用 def 關(guān)鍵字來定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù)self, 且為第一個(gè)參數(shù),self代表的是類的實(shí)例。
self:類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——必須有一個(gè)額外的第一個(gè)參數(shù)名稱, 按照慣例它的名稱是self。
類的實(shí)例:是將類應(yīng)用在實(shí)例場(chǎng)景之中,比如有個(gè)類里的函數(shù)是f,假如這個(gè)f具有print某一時(shí)刻的天氣狀況的能力,那么如果我需要這個(gè)f來print一下今天12點(diǎn)的天氣,那么讓他打印今天12點(diǎn)的天氣這個(gè)動(dòng)作,就是類的實(shí)例化,讓類中的函數(shù)具有的能力變成真實(shí)的動(dòng)作。
實(shí)例化實(shí)例:
#類定義 class people: #定義基本屬性 name = '' age = 0 #定義私有屬性,私有屬性在類外部無法直接進(jìn)行訪問 #定義構(gòu)造方法 def __init__(self,n,a): self.name = n self.age = a def speak(self): print("%s 說: 我 %d 歲。" %(self.name,self.age)) # 實(shí)例化類 p = people('Python',10,30) p.speak()
輸出結(jié)果:
假如有兩個(gè)家族,有一個(gè)家族A開始沒落了,另一個(gè)新興的家族B想繼承A家族的物資和傭人,那么就可以通過如下的方式實(shí)現(xiàn)繼承,在這里,家族A即是父類,家族B是子類。在用法上,如果B家族可以任意使用A家族的物品和傭人。
class [子類]([父類]):
BaseClassName(示例中的基類名)必須與派生類定義在一個(gè)作用域內(nèi)。除了類,還可以用表達(dá)式,基類定義在另一個(gè)模塊中時(shí)這一點(diǎn)非常有用。
python還支持多繼承,即可以繼承多個(gè)父類。繼承方式和單繼承方式一樣,方式如下:
class [子類]([父類]1, [父類]2, [父類]3):
繼承實(shí)例:
#類定義 class people: #定義基本屬性 name = '' age = 0 #定義私有屬性,私有屬性在類外部無法直接進(jìn)行訪問 __weight = 0 #定義構(gòu)造方法 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): #student為子類,people為父類 grade = '' def __init__(self,n,a,w,g): #調(diào)用父類的構(gòu)函 people.__init__(self,n,a,w) self.grade = g #覆寫父類的方法 def speak(self): print("%s 說: 我 %d 歲了,我在讀 %d 年級(jí)"%(self.name,self.age,self.grade)) s = student('ken',10,60,3) s.speak()
運(yùn)行結(jié)果:
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法。即如果B家族繼承了A家族,但是B家族有個(gè)傭人只會(huì)掃地,于是A家族給這個(gè)人洗腦,讓他啥都不會(huì),然后再教這個(gè)傭人洗碗、擦桌子的技能,那么這個(gè)傭人就只會(huì)洗碗和擦桌子了。
super()函數(shù)是用于調(diào)用父類(超類)的一個(gè)方法。
方法重寫實(shí)例:
class Parent: # 定義父類 def myMethod(self): print('調(diào)用父類方法') class Child(Parent): # 定義子類 def myMethod(self): print('調(diào)用子類方法') c = Child() # 子類實(shí)例 c.myMethod() # 子類調(diào)用重寫方法 super(Child,c).myMethod() #用子類對(duì)象調(diào)用父類已被覆蓋的方法
輸出結(jié)果:
_private_attrs:兩個(gè)下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí) self.__private_attrs。
私有屬性實(shí)例:
class JustCounter: __secretCount = 0 # 私有變量 publicCount = 0 # 公開變量 def count(self): self.__secretCount += 1 self.publicCount += 1 print(self.__secretCount) counter = JustCounter() counter.count() counter.count() print(counter.publicCount) print(counter.__secretCount) # 報(bào)錯(cuò),實(shí)例不能訪問私有變量
輸出結(jié)果:
__private_method:兩個(gè)下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用 ,不能在類的外部調(diào)用。self.__private_methods。
私有方法實(shí)例:
class Site: def __init__(self, name, url): self.name = name # public self.__url = url # private def who(self): print('name : ', self.name) print('url : ', self.__url) def __foo(self): # 私有方法 print('這是私有方法') def foo(self): # 公共方法 print('這是公共方法') self.__foo() x = Site('Python', 'www.irvingao.com') x.who() # 正常輸出 x.foo() # 正常輸出 x.__foo() # 報(bào)錯(cuò)
輸出結(jié)果:
到此,相信大家對(duì)“python之class類和方法怎么使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。