Python中類(lèi)與類(lèi)之間屬性和方法的調(diào)用
class A(object): #定義一個(gè)類(lèi) name='python' #類(lèi)屬性 def __init__(self): #實(shí)例屬性 self.age=18 def a_print(self): #實(shí)例方法 print('aaa') @classmethod #類(lèi)方法 def b_print(cls): #cls指代當(dāng)前的類(lèi) print(cls.__name__) #獲取當(dāng)前類(lèi)名 @staticmethod #靜態(tài)方法 def c_print(): print('static') print(A.name) #調(diào)用類(lèi)屬性 A.b_print() #調(diào)用類(lèi)方法 # print(A.age) 不可以調(diào)用實(shí)例屬性 print(A().age) #匿名實(shí)例對(duì)象可以調(diào)用實(shí)例屬性 a_obj=A() # 類(lèi)對(duì)象 可以調(diào)用這個(gè)類(lèi)中所有方法和屬性 print(a_obj.age) print(a_obj.name) a_obj=A() #在外部生成一個(gè)對(duì)象 a_obj.num=1000 #對(duì) 對(duì)象增加一個(gè)額外屬性,并賦值 def func(a_obj): #再把這個(gè)對(duì)象傳遞到另一個(gè)方法中 print(a_obj.num) #這個(gè)方法中我就可以拿到這個(gè)對(duì)象,并用這個(gè)對(duì)象獲取到這個(gè)對(duì)象額外添加 的數(shù)據(jù) func(a_obj) #可以在方法中傳遞數(shù)據(jù) #一個(gè)類(lèi)想要調(diào)用另一個(gè)類(lèi)的方法和屬性,有兩種形式 # 1.繼承 # 2.把另外一個(gè)對(duì)象傳遞到這個(gè)類(lèi)中,在這個(gè)類(lèi)中調(diào)用實(shí)例對(duì)象 # 把一個(gè)類(lèi)當(dāng)做是另一個(gè)類(lèi)的屬性,通過(guò)屬性調(diào)用的方式調(diào)用另一個(gè)類(lèi)的方法 class B(object): def __init__(self): self.a_obj=A() #把A對(duì)象直接作為B的屬性 def func(self,a_obj): print(a_obj.num) a_obj.a_print() b_obj=B() b_obj.a_obj.a_print() b_obj.a_obj.b_print() b_obj=B() b_obj.func(a_obj)
例:
son.py和all.py在同一個(gè)文件夾下面,可以通過(guò)from son import *或者import son來(lái)互相調(diào)用。
可以動(dòng)態(tài)實(shí)例化son.py里面的SON類(lèi),而且也可以把ALL的實(shí)例通過(guò)參數(shù)傳遞給SON,從而調(diào)用ALL類(lèi)的方法。
all.py
from son import * class ALL(): def __init__(self): self.mSon = SON(self) def getAll(self): print "=================getall---------------" return self.mSon.getSon() def getAlltest(self): print "=================getAlltest---------------" Instance = ALL() Instance.getAll()
son.py
class SON(): def __init__(self, instance): self.mBattle = instance def getSon(self): return self.mBattle.getAlltest()
更多Python相關(guān)技術(shù)文章,請(qǐng)?jiān)L問(wèn)Python教程欄目進(jìn)行學(xué)習(xí)!
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com