30.面向物件中常用內建函式與過載函式
阿新 • • 發佈:2018-12-01
內建函式:類中特殊功能
- __init__(self): ###為例項物件賦值
class A(object): def __init__(self): #init自動呼叫 print('我是init') self.num = 1 a = A()執行結果:
我是init
- __new__(self): ###建立例項物件,簡稱構造器
class A(object): def __new__(self): #建立例項物件,構造器 new函式是可以不寫的,面向物件預設自帶 print('我是new') return super(A,self).__new__(self) #new函式必須要返回一個例項物件 def __init__(self): #為例項物件賦值 print('我是init') self.num = 1 a = A()執行結果:
我是new 我是init
- __del__(self): ###拆除釋放掉骨架,簡稱析構器 (一般來說可以不定義,因為記憶體便宜了,優秀的程式設計師想要寫的更好就可以用這個函式釋放一下記憶體,就算不寫也不會影響什麼,除非你的資料比較大幾百兆甚至更多)
class A(object): def __new__(self): #建立例項物件,構造器 預設是可以不寫的 print('我是new') return super(A,self).__new__(self) #new函式必須要返回一個例項物件 def __init__(self): #為例項物件賦值 print('我是init') self.num = 1 def __del__(self): del self.num print('我是del,資料記憶體釋放完畢') a = A()執行結果:
我是new 我是init 我是del,資料記憶體釋放
- __slots__ = ('name','age')
過載這些內建函式:運算子內建函式class A(object): def __init__(self): #為例項物件賦值 self.age = 20 self.name = '小紅' print('我是%s,今年%s歲' % (self.name,self.age)) __slots__ = ('age','name') a = A()執行結果:
我是小紅,今年20歲
- 繼承重寫:運算子 (記住要時刻要用dir函式檢視內建函式,help檢視函式的幫助文件)
- 繼承重寫:操作符