標籤:析構 return item def name dingding hide 根據 expand
構造方法:
目的:構造方法用於初始化對象,可以在構造方法中新增成員屬性
觸發時機:執行個體化對象的時候自動調用
參數:第一個參數必須是self,其它參數根據需要自己定義
傳回值:不傳回值,或者說返回None,不應該返回任何其他值
1 def __init__(self,arg1,arg2....):2 函數體3 #參數:arg1,agr2...根據需要自己定義4 #如果自己不定義構造方法,系統自動產生一個建構函式5 def __init__(self):6 pass
View Code
如果自己沒有寫構造方法,系統會自動產生一個構造方法,裡面除了self,沒有任何參數,
1 class Dog(object): 2 def __init__(self,name,kind,age): 3 self.name = name #定義對象屬性,這個類所有的對象都具有該屬性 4 self.kind = kind #成員屬性必須通過self.引用,否則是普通變數 5 self.age = age 6 7 def bark(tmp): 8 print(‘我是小可愛‘) 9 10 dingding = Dog(‘大黃‘,‘泰迪‘,3)11 print(‘我是可愛的%s犬,%s,我今年%d歲了‘ % (dingding.kind, dingding.name, dingding.age))
View Code
析構方法:
目的:對象銷毀時,釋放資源
時機:對象銷毀時由系統自動調用
參數:除了self外,沒有其他參數
傳回值:不傳回值,或者說返回None。
1 def __del__(self): 2 #to do
1 class Dog(object): 2 #構造 3 def __init__(self,name,kind,age): 4 self.name = name 5 self.kind = kind 6 self.age = age 7 #析構 8 def __del__(self): 9 print(‘拜拜了,二十年後又是一條好漢‘)10 def bark(tmp):11 print(‘我是小可愛--丁丁‘)12 13 dingding = Dog(‘丁丁‘,‘泰迪‘,3)14 print(‘我是可愛的%s犬,%s,我今年%d歲了‘ % (dingding.kind, dingding.name, dingding.age))15 del dingding #銷毀對象,自動調用析構方法16 17 #在函數中對象,當函數結束運行時,自動析構18 def test():19 td = Dog(‘噹噹‘,‘泰迪‘,3)
View Code
還介紹一個魔術方法比較常用:__str__()
這個魔術方法可以讓你定義的對象輸出的時候不會是一個地址了,看到的可以是你希望看到的字串,
目的:將對象轉化為字串
時機:凡是涉及對象向字串轉換的都會調用
參數:self
傳回值:字串
1 class Animal: 2 def __init__(self,name,age): 3 self.name = name 4 self.__age =age 5 def __str__(self): 6 return "name : {} age : {}".format(self.name,self.__age) 7 def __repr__(self): 8 return self.__str__() 9 a1 = Animal(‘zhu‘,3)10 print(a1)11 print(‘我是一頭可愛的 ‘ + str(a1)__str__()
python編程基礎之三十三