3.0 類的內置方法 3.1 類的繼承(1) 3.2 類的繼承(2)

3.0 類的內置方法

所謂內部類,就是在類的內部定義的類,主要目的是爲了更好的抽象現實世界。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

3.1-3.2 類的繼承

繼承是面向對象的重要特徵之一;

繼承關係:繼承是相對兩個類而言的父子關係,子類繼承了父類的全部共有屬性和方法

繼承實現了代碼重用

繼承能夠重寫已存在的數據和行爲,減小代碼的重複編寫,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__方法的參數。

super函數

能夠繼承類的繼承父類的方法和屬性

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__方法,其餘的不執行

相關文章
相關標籤/搜索