簡明Python教程 — 11.物件導向

來源:互聯網
上載者:User

簡明Python教程 --- 11.物件導向

 

   在本章之前,所有對Python的介紹都是關於語句塊和函數的。這叫做面向過程編程。

   本章,就要開始介紹Python中的物件導向編程的知識。在Python中,類和對象是物件導向編程的兩個主要方面。類建立了一個新類型,而對象是這個類的執行個體。

   類是一個獨立的結構,它的內部包含欄位和方法。欄位是指類內部的變數,而方法是指類內部的函數。這些欄位和方法存在於類內部,是類的成員。

   類用class關鍵字建立,類的欄位和方法被列在緊跟其後的縮排塊中。

建立一個類

   class Person :

      name=u'名字';

      def printName(self) :

         print self.name;

p = Person();

p.printName();

注意,self是指對當前執行個體的引用,這和C++中的self指標或Java、C#中的this引用。另外,類的方法的第一個參數必須是self,即使你的方法沒有參數,你還是要添加一個self,如上面的例子。

但是,調用類的方法的時候,不需要將self顯式地寫出來,如上例。

__init__方法

   在Python中,類的某些方法是有特殊作用的。

   __init__方法就是其中之一,它會在建立類的執行個體的時候被自動調用,來完成一些初始化的操作。

   可以看到,__init__方法和C++、Java、C#中的構造方法是類似的。

   class Person :

      def __init__(self, name) :

         self.name = name;

      def printName(self) :

         print self.name;

p = Person(u'名字2');

p.printName();

類的成員、對象的成員

   這裡只舉一個例子來說明類的成員與對象的成員的區別。

   class Person :

      count = 0;

      def __init__(self, name) :

         print '__init__';

         self.name = name;

         Person.count += 1;

      def __del__(self) :

         print '__del__';

         Person.count -= 1;

      def printCount(self) :

         print self.name, ":", Person.count;

p1 = Person("p1Name");

p1.printCount();

p2 = Person("p2Name");

p2.printCount();

p3 = Person("p3Name");

p3.printCount();

在上例中,name是對象的成員,而count是類的成員。

注意,和Java這類語言不通,Python中沒有private、protected這種存取範圍限定符,在Python中類的所有成員都是公有的。但是還是有一種例外情況的,就是Python會自動把以雙底線開頭的成員作為私人成員。

另外,上面你所看到的__del__方法類似於C++中的析構方法,或Java中的finalize方法。在對象應該被垃圾收集的時候,該方法會被自動調用來完成最後的一些清理工作。

繼承

   class Person :

      def __init__(self, name) :

         self.name = name;

      def printSelf(self) :

         print "name is ", self.name;

class Student(Person) :

      def __init__(self, name) :

         Person.__init__(self, name);

         self.type = 'student';

      def printSelf(self) :

         Person.printSelf(self);

         print "type is ", self.type;

s = Student('Tom');

s.printSelf();

上面的例子中,Student類繼承了Person類。注意上面的代碼的這一行:

class Student(Person) :

其中,(Person)是一個元組,前面介紹過元組這種資料結構。如果這個元組中有一個以上的類,則叫做多重繼承。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.