所謂內部類,就是在類的內部定義的類,主要目的是爲了更好的抽象現實世界。python
好比,汽車是一個類,汽車的地盤,輪胎也能夠抽象爲類,將其定義到汽車的類中,則造成內部類,更好的描述汽車類,由於底盤、輪胎是汽車的一部分算法
建立內部類的方法和建立類的方法很類似函數
方法1:直接使用外部類調用內部類code
object_name = outclass_name.inclass_name()對象
class People(object): class Chinese(object): name = "I'm a Chinese" me = People.Chinese() print me.name ---------- I'm a Chinese
方法2:先對外部類進行實例化,而後再實例化內部類繼承
out_name = outclass_name() in_name = out_name.incalss_name() in_name.method()資源
class People(object): class Chinese(object): name = "I'm a Chinese" me = People.Chinese() print People.Chinese.name ---------- I'm a Chinese
str(self)作用域
class A(object): def __str__(self): return "123" a = A() print a \\類實例化的時候就會執行,不須要額外調用
構造函數it
用於初始化類的內部狀態,python提供的構造函數是_init_()class
_init_()方法時可選的,若是不提供,python會給出一個默認的__init__方法
析構函數:
用於釋放對象佔用的資源,python提供的析構函數是 _del_():
_del_()也是可選的,若是不提供,則python會在後臺提供默認析構函數
python採用垃圾回收機制來清理再也不使用的對象;python提供gc模塊釋放再也不使用的對象
python採用「引用計數」的算法方式來回收,即:當某個對象在做用域內再也不被其餘對象引用的時候,python就自動清除對象;
gc模塊的collect()能夠一次性收集全部待處理的對象(gc.collect)
import gc print gc.collect
繼承是面向對象的重要特徵之一;
繼承關係:繼承是相對兩個類而言的父子關係,子類繼承了父類的全部共有屬性和方法
繼承實現了代碼重用
繼承能夠重寫已存在的數據和行爲,減小代碼的重複編寫,python在類名後面使用一對括號來表示繼承關係,括號中的類即爲父類。
class MyClass(ParentClass): class Parent(object): p1 = 1 def func(self): print "Parents" class Child(Parent): pass c = Child() c.func() ------ Patents
若是父類定義了__init__方法,子類必須顯式調用父類的__init_方法:
ParentClass.__init__(self,[args...])
舉例:
class Parent(object): def __init__(self,n): pass def func(self): pass
class Child(Parent): def init(self): Parent.init(self,"child")
若是子類須要擴展父類的行爲,能夠添加__init__方法的參數。
能夠繼承類的繼承父類的方法和屬性
class A(object): def __init__(self): print "A" print "AA" class B(object): def __init__(self): print "B" super(B,self).__init__() print "BB" b = B()
Python支持多重繼承,一個類能夠繼承多個父類
class MyClass(Patent1,Parent2...)
注意,當父類中出現多個自定義的__init__方法時,多重繼承只執行第一個類的__init__方法,其餘的不執行