如何使用Python的類? 優勢有哪些?

zhongpeijiaoyu發表於2020-07-30

  Python是一種物件導向的高階語言,因此類對於Python非常重要。類是一個空間,在該空間中變數(屬性/方法)分別儲存。運算子’ . ‘用於呼叫類的屬性和方法。類是事務類的抽象,它不是真的存在,它描述了事務的共性。在搜尋類屬性時,python首先找到例項,然後在例項中找到屬性,當找不到時,它將在類內部進行搜尋。那麼如何使用Python的類? 優勢有哪些?下面讓我們一起來詳細瞭解一下吧。

  如何使用Python的類?

  1.在Python中,定義類是通過class關鍵字來實現的:

  class Student(object):

  Pass

  class 後面緊接著是類名,即Student.類名通常採用單詞首字母大寫的形式命名,比如 StudentCore。

  (object) 表示該類是從哪個類繼承來的。如果沒有合適的繼承類,則通常使用 object 類,這是所有類都會繼承的類。

  2.例項化一個類是通過在類名後面加小括號“()”來實現的:

  pupil=Student ()

  “小學生”是“學生”這個的一個例項。所謂例項,可以將其理解為類的化身。類不能被直接使用,只能先將其例項化,然後用例項代表類,進而呼叫類中的方法處理資料。那麼例項是怎麼代表類的呢?在定義類及其方法時,有一個引數叫self, 它就是串聯例項與類之間的關鍵引數,可以簡單地理解為“self=例項名”。

  類的下面有屬性和方法。可以將屬性理解為靜態的資料,將方法理解為動態的處理函式。比如,在下面的程式碼中定義了“學生”類,其中_ init _是屬性,print_score 是方法。

  #--coding:utf-8-

  Class Student (object) :

  def _ _ init_ _ (self,name,score) :

  self.name= name

  self.score=score

  def print_score (self) :

  print (‘%s: %s’% (self. _ _name,self. _ _acore) )

  3.例項化上面的類,然後分析Python 如何利用例項化類呼叫類中的方法。

  完整的例項化類與呼叫過程如下:

  pupil=student (name=’lilei’,score=99)

  pupil.print_score ()

  按照前面的說法,self=例項名,那麼 pupil=Student (name=’lilei’,score=99) , 例項化類的第一步是執行 _ init _ 語句,即 Student (self=’pupil’,name=’lilei’,score=99) , 則可知pupil.name=’lilei’,pupil.score=9.例項化類的第二步是執行 pupil.print_score () 語句,呼叫例項的方法就是呼叫類的方法,而這個方法是按照格式列印出

  pupil.name:pupil.score,mlilei: 99。

  Python類優勢有哪些?

  1.類的訪問限制

  所謂類的訪問限制,即在類的外部不能直接呼叫類中的資料。在 Python 中,在變數前加“_ _”可將變數置為私有變數,使其只能在類中被使用,不能被類之外的其他函式(方法)呼叫。下面程式碼中的name 參數列示的就是私有變數。

  #--coding:utf-8--

  #_ author _=’大嬸N72’

  class Student (object) :

  def _ init _(self,name,score) :

  self._ _name= name

  self.score= score

  def print_score (self) :

  print (‘%s: %S’% (self._ name,self. _score) )

  MeiMei=Student (‘hello’, 99)

  print (MeiMei.score)

  print (MeiMei. _ _name)

  程式碼的執行結果很好地佐證了加了“_ ”的引數是不能被呼叫的,沒加“ _”的引數是可以直接被呼叫的,如下所示:

  C:\Python36\python3. exe F:/Autotest_interface_demo/test. py www.zpedu.com/it/rjyf/

  99

  Traceback (most recent call last):

  File “F:/Autotest interface demo/test.py”, line 12, in

  print (MeiMei._name)

  AttributeError: ‘ Student’ object has no attribute’__name’

  Process finished with exit code 1

  2.類的繼承

  所謂“繼承”, 從字面上看很好理解:如果一個類繼承了另外一個類,則這個類就有了被繼承的類的所有方法和屬性。我們可以直接使用這些方法和屬性,無須再單獨寫。下面舉一個例子來解釋什麼是繼承。類的基本定義如下:

  # -- coding:utf-8 --

  # _ author _=‘大嬸N72’

  # 父類

  class Parent (object) :

  def print_self (self) :

  return “我是父類”

  # 子類繼承父類

  class Student (Parent) :

  def_ init _ (self,name,score) :

  self. _ _name= name

  self.score=score

  def print_score (self) :

  print (‘%s: %s’% (self. _ _name,self. _ _score) )

  MeiMei=Student (‘hello’, 99)

  print (MeiMei.score)

  #直接在子類中使用父類的方法

  print (MeiMei.print_self ()

  在上面的例子中,子類 Student 繼承了父類 Parent.方法是在類名稱後面的小括號中加上父類的名稱。子類繼承了父類,則有了父類 Parent 的方法 print_self, 從而可以直接在自己的例項名中使用。

  3.類的多型

  如果子類繼承了父類,但是又想改變父類的方法,則這時無須修改父類的方法,只需要在子類中新增相同的方法名就可以起到覆蓋的作用,這就是多型。

  # -- coding:utf-8 --

  # _ author _=’大嬸N72’

  #父類

  class Parent (object) :

  def print_self (self) :

  return”我是父類”

  #子類繼承父類

  class Student (Parent) :

  def _ init _ (self,name,score) :

  self. _ _name= name

  self.score=score

  def print_score (self) :

  print (‘%s: %S’% (self. _name,self. _ _score) )

  def print_self (self) :

  return”我是子類”

  MeiMei=Student (‘hello’, 99)

  print (MeiMei.score)

  #子類的方法覆蓋父類方法

  print (MeiMei.print_self () )

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章