1. 程式人生 > 實用技巧 >認識--類 ( Class ) 面向物件技術

認識--類 ( Class ) 面向物件技術

類(Class): 用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法。物件是類的例項。

類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。
資料成員:類變數或者例項變數, 用於處理類及其例項物件的相關的資料。
方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
區域性變數:定義在方法中的變數,只作用於當前例項的類。
例項變數:在類的宣告中,屬性是用變數來表示的。這種變數就稱為例項變數,是在類宣告的內部但是在類的其他成員方法之外宣告的。
繼承:即一個派生類(derived class)繼承基類(base class)的欄位和方法。繼承也允許把一個派生類的物件作為一個基類物件對待。
例如,有這樣一個設計:一個Dog型別的物件派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。
例項化:建立一個類的例項,類的具體物件。
方法:類中定義的函式。
物件:通過類定義的資料結構例項。物件包括兩個資料成員(類變數和例項變數)和方法。

建立類
使用 class 語句來建立一個新類,類的首字母一般大寫, class 之後為類的名稱並以冒號結尾:

class ClassName:
   '類的幫助資訊'   #類文件字串
   class_suite  #類體

類的幫助資訊可以通過ClassName.__doc__檢視。
class_suite 由類成員,方法,資料屬性組成。

例項

class Box1():
'這是一個求立方體類'
      def __init__(self, length1, width1, height1):      #傳遞類引數的保留函式__init__
            self.length = length1
            self.width = width1
            self.height = height1
      def volume(self):
            return self.length*self.width*self.height

my_box = Box1(7,8,9)
print('立方體的體積是%d' % (my_box.volumn()))

self代表類的例項,而非類
類的方法與普通的函式只有一個特別的區別——它們必須有一個額外的第一個引數名稱, 按照慣例它的名稱是 self。

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()

以上例項執行結果為:

<__main__.Test instance at 0x10d066878>
__main__.Test

從執行結果可以很明顯的看出,self 代表的是類的例項,代表當前物件的地址,而 self.class 則指向類。
self 不是 python 關鍵字,我們把他換成 runoob 也是可以正常執行的:
例項

class Test:
    def prt(runoob):
        print(runoob)
        print(runoob.__class__)
 
t = Test()
t.prt()

以上例項執行結果為:

<__main__.Test instance at 0x10d066878>
__main__.Test