萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> 講解Python中面向對象編程的相關知識

講解Python中面向對象編程的相關知識

   這篇文章主要介紹了深入講解Python中面向對象編程的相關知識,是Python入門學習中的基礎知識,需要的朋友可以參考下

  Python從第一天開始就是面向對象的語言。正因為如此,創建和使用類和對象是非常地容易。本章將幫助您在使用Python面向對象編程的技術方面所有提高。

  如果沒有任何以往面向對象(OO)的編程的經驗,那麼可能要了解一些基本的入門課程就可以了,或者至少某種形式的教程,讓你有了解基本概念。

  但是,這裡會比較少地介紹面向對象編程(OOP):

  OOP術語概述

  類: 用戶定義的原型對象,它定義了一套描述類的任何對象的屬性。屬性是數據成員(類變量和實例變量)和方法,通過點符號訪問。

  類變量:這是一個類的所有實例共享的變量。類變量在類,但外面的任何類的方法定義。類變量不被用作經常作為實例變量。

  數據成員:保存與類和對象關聯的數據的類變量或實例變量。

  函數重載:一個以上的行為特定功能的分配。執行的操作所涉及的對象(自變量)的類型不同而不同。

  實例變量:所定義的方法內,只屬於一個類的當前實例的變量。

  繼承:類的特點,即都是由它派生其他類的轉移。

  實例:某一類的一個單獨對象。屬於類Circle一個obj對象,例如,是類Circle的一個實例。

  實例化:創建一個類的實例。

  Method : 一種特殊的函數,函數在類定義中定義。

  對象:這是由它的類中定義的數據結構的唯一實例。一個對象包括兩個數據成員(類變量和實例變量)和方法。

  運算符重載:一個以上的函數功能,特定的操作符分配。

  創建類:

  類語句將創建一個新的類定義。類的名稱緊跟在關鍵字class後跟一個冒號,如下所示:

  ?

1 2 3 class ClassName: 'Optional class documentation string' class_suite

  類有一個文檔字符串,它可以通過類名.__ doc__訪問。

  class_suite由所有定義的類成員,數據屬性與函數組件的語句。

  例子

  下面是一個簡單的Python類的例子:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Employee: 'Common base class for all employees' empCount = 0   def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1   def displayCount(self): print "Total Employee %d" % Employee.empCount   def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary

  empCount是一個類變量,其值將是這個類的所有實例共享。這可以從類中或外部進行訪問,訪問形式為 Employee.empCount。

  第一個方法__init__()是一種特殊的方法,這就是所謂的類構造函數或當創建該類的一個新實例Python調用的初始化方法。

  聲明就像正常函數中一樣,不同的是第一個參數到每個方法是類的方法。 Python增加了self參數列表;不需要把調用的方法都它列入。

  創建實例對象:

  要創建一個類的實例,調用類名並傳遞任何參數給__init__方法接收。

  ?

1 2 3 4 "This would create first object of Employee class" emp1 = Employee("Zara", 2000) "This would create second object of Employee class" emp2 = Employee("Manni", 5000)

  訪問屬性:

  可以訪問使用點運算符來訪問對象的屬性。而類變量使用類名來訪問,如下所示:

  ?

1 2 3 emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount

  現在,把所有的概念放在一起:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/python   class Employee: 'Common base class for all employees' empCount = 0   def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1   def displayCount(self): print "Total Employee %d" % Employee.empCount   def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary   "This would create first object of Employee class" emp1 = Employee("Zara", 2000) "This would create second object of Employee class" emp2 = Employee("Manni", 5000) emp1.displayEmployee() emp2.displayEmployee() print "Total Employee %d" % Employee.empCount

  當執行上面的代碼,產生以下結果:

  ?

1 2 3 Name : Zara ,Salary: 2000 Name : Manni ,Salary: 5000 Total Employee 2

  在任何時候可以添加,刪除或修改類和對象的屬性:

  ?

1 2 3 emp1.age = 7 # Add an 'age' attribute. emp1.age = 8 # Modify 'age' attribute. del emp1.age # Delete 'age' attribute.

  除了使用正常的語句來訪問屬性,可以使用以下函數:

  getattr(obj, name[, default]) : 訪問對象的屬性。

  hasattr(obj,name) : 檢查一個屬性是否存在。

  setattr(obj,name,value) : 設置一個屬性。如果屬性不存在,那麼它將被創建。

  delattr(obj, name) : 要刪除一個屬性。

  ?

1 2 3 4 hasattr(emp1, 'age') # Returns true if 'age' attribute exists getattr(emp1, 'age') # Returns value of 'age' attribute setattr(emp1, 'age', 8) # Set attribute 'age' at 8 delattr(empl, 'age') # Delete attribute 'age'

  內置的類屬性:

  每個Python類會繼續並帶有內置屬性,他們可以使用點運算符像任何其他屬性一樣來訪問:

  __dict__ : 字典包含類的命名空間。

  __doc__ : 類的文檔字符串,或None如果沒有定義。

  __name__: 類名稱。

  __module__: 在類中定義的模塊名稱。此屬性是在交互模式其值為“__main__”。

  __bases__ : 一個可能是空的元組包含了基類,其在基類列表出現的順序。

  對於上面的類,嘗試訪問這些屬性:

  ?

1 2 3 4 5 6 7 8 9 10
copyright © 萬盛學電腦網 all rights reserved