|
帶你走進(jìn) @ 機(jī)器人時(shí)代 Discover 點(diǎn)擊上面藍(lán)色文字,關(guān)注我們 ![]()
通常情況下,我們希望用類對(duì)象來(lái)調(diào)用實(shí)例方法,但是要注意的是,通過(guò)類名直接調(diào)用實(shí)例方法時(shí),Python 并不會(huì)自動(dòng)給 self 參數(shù)傳值。 如果想通過(guò)類名直接調(diào)用實(shí)例方法,就必須手動(dòng)為 self 參數(shù)傳值。我們來(lái)看看下面的代碼: #定義一個(gè)類class CL: def info(self): print('這是一個(gè)類方法')#通過(guò)類名直接調(diào)用實(shí)例方法d=CL()CL.info(d)運(yùn)行結(jié)果:這是一個(gè)類方法我們也可以修改代碼,直接傳遞任意的參數(shù): 我們?cè)趯W(xué)習(xí)類編程的時(shí)候,不止一次提到過(guò)命名空間。實(shí)際上,在所有的class關(guān)鍵字修飾的代碼塊中,都可以看成獨(dú)立的空間。 在這個(gè)獨(dú)立的空間里面,所有的屬性和方法都是獨(dú)立的。所有的屬性都是在這個(gè)空間里面的變量,所有的方法都是這個(gè)空間的函數(shù)。 不過(guò),在程序中我們應(yīng)該如何調(diào)用它們呢?我們來(lái)看看一個(gè)實(shí)例: a='這是一個(gè)全局變量'def say(): print('這是一個(gè)全局函數(shù)的方法')class st: def say1(): print('這是一個(gè)類空間里面的函數(shù)方法') b='這是一個(gè)類空間的變量'print(a)say()print(st.b)st.say1()運(yùn)行結(jié)果:這是一個(gè)全局變量這是一個(gè)全局函數(shù)的方法這是一個(gè)類空間的變量這是一個(gè)類空間里面的函數(shù)方法
如果一個(gè)類的某個(gè)屬性有數(shù)據(jù)描述符,那么每次查找這個(gè)屬性時(shí),都會(huì)調(diào)用描述符的 __get__() 方法,并返回它的值;同樣,每次在對(duì)該屬性賦值時(shí),也會(huì)調(diào)用 __set__() 方法。我們可以看看下面的例子: class Ace: def __init__(self, i = None, name = '描述符的數(shù)據(jù)'): self.v = i self.name = name def __get__(self, a, c): print('這是get查找的',self.name) return self.v def __set__(self, s, b): print('他是',self.name) self.v = bm = Ace(5,'輸入新的變量')print(m.name)class myClass: x = Ace(10,'調(diào)用類輸入的變量')n=myClass()print(n.x)輸出結(jié)果:輸入新的變量這是get查找的 調(diào)用類輸入的變量10
繼續(xù)堅(jiān)持學(xué)習(xí),每天都能進(jìn)步一點(diǎn)?。?! 往期回顧:
本文引用和摘錄相關(guān)內(nèi)容,請(qǐng)聯(lián)系侵刪。 - END - 最后,文章有幫助到你的話【點(diǎn)贊在看】 |
|
|
來(lái)自: 網(wǎng)摘文苑 > 《面向?qū)ο蟆?/a>