python中的繼承

來源:互聯網
上載者:User

1.    python定義一個類的方法:

class Animal():def __init__(self,name):self.name=name;def show(self):print self.name;a=Animal('dog');a.show();

    上面定義了一個類Animal,它以class 關鍵字開頭,類中的方法用def關鍵字開頭,類中的init是類的構造方法,在產生執行個體的時候會自動調用,類中還定義了show方法,它用於列印執行個體的變數name,每個方法都帶有參數self,它可以認為是當前的對象自身。

2.    繼承是物件導向的重要特徵,它可以提高代碼的複用性,從而減少某些代碼的重寫。繼承可以分為單繼承和多重繼承。python中指定基類的方法是定義衍生類別時在括弧中寫入基類的名字,如class derive(base).python可以使用兩種單繼承的方法,第一種是:

class Animal():def __init__(self,name):self.name=name;def show(self):print self.name;#a=Animal('dog');#a.show();class dog(Animal):def __init__(self,name):Animal.__init__(self,name);def bark(self):print "dog can bark";d=dog('dog');d.bark();

    上面的dog類繼承自基類Animal,它的構造方法中調用了基類的構造方法Animal.__int__();  這一點需要注意,python的衍生類別執行個體化對象時,並不會自動基類的構造方法。衍生類別對象會首先在本類尋找init方法,如果找到就調用然後完成執行個體化,如果找不到,則會在基類中尋找init方法完成執行個體化。如果有多個基類,則會按照繼承的順序依次尋找init方法,這個後面還會講到。

     第二種單繼承的方法是使用super函數,使用的方法是:

__metaclass__=type;class Animal():def __init__(self,name):self.name=name;def show(self):print self.name;#a=Animal('dog');#a.show();class dog(Animal):def __init__(self,name):super(dog,self).__init__(name);def bark(self):print "dog can bark";d=dog('dog');d.bark();

上面的dog類使用super(dog,self),它接受兩個參數,衍生類別名和self。

3.    python的多重繼承

    多重繼承只要在括弧內填入兩個或者更多基類即可,如class derive(base1,base2)

class base1():def __init__(self):print "base1 called";class base2():def __init__(self):print "base2 called";class derive1(base1,base2):def __init__(self):#base1.__init__(self);#base2.__init__();print "derive1 called";class derive2(base2,base1):pass;

鍵入命令:

>>>d1=derive1()

derive1 called

刪除derive1中的 __init__(self)方法,則敲入一下命令:

>>>d1=derive1()

base1 called

>>>d2=derive2()

base2 called

>>>d1.show()

this is base1

>>>d2.show()

this is base1

    衍生類別在執行個體化時,首先尋找本類中的構造方法,如果有則調用本類的構造方法,如果沒有,則調用第一個調用基類的構造的方法,如上面的derive1如果不定義構造方法,會調用base1的構造方法。除了構造方法外,其它方法的調用方式與此類似,如d1.show(),會調用base1中的show()方法。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.