自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對于Python繼承問題全解析

開發(fā) 后端
一個術語的注釋——在Python中,如果在繼承元組中列了一個以上的類,那么它就被稱作多重Python繼承。

面向對象語言的最大有點是讓編程人員對其代碼可以重用,那么怎么實現(xiàn)這種方法呢?實現(xiàn)這種重用的方法的關鍵是通Python繼承機制。繼承完全可以理解成類之間的類型。

假設你想要寫一個程序來記錄學校之中的教師和學生情況。他們有一些共同屬性,比如姓名、年齡和地址。他們也有專有的屬性,比如教師的薪水、課程和假期,學生的成績和學費。

你可以為教師和學生建立兩個獨立的類來處理它們,但是這樣做的話,如果要增加一個新的共有屬性,就意味著要在這兩個獨立的類中都增加這個屬性。這很快就會顯得不實用。

一個比較好的方法是創(chuàng)建一個共同的類Python繼承稱為SchoolMember然后讓教師和學生的類Python繼承 這個共同的類。即它們都是這個類型(類)的子類型,然后我們再為這些子類型添加專有的屬性。

使用這種方法有很多優(yōu)點。如果我們增加/改變了SchoolMember中的任何功能,它會自動地反映到子類型之中。例如,你要為教師和學生都增加一個新的身份證域,那么你只需簡單地把它加到SchoolMember類中。

然而,在一個子類型之中做的改動不會影響到別的子類型。另外一個優(yōu)點是你可以把教師和學生對象都作為SchoolMember對象來使用,這在某些場合特別有用,比如統(tǒng)計學校成員的人數(shù)。一個子類型在任何需要父類型的場合可以被替換成父類型,即對象可以被視作是父類的實例,這種現(xiàn)象被稱為多態(tài)現(xiàn)象。

另外,我們會發(fā)現(xiàn)在 重用父類的代碼的時候,我們無需在不同的類中重復它。而如果我們使用獨立的類的話,我們就不得不這么做了。在上述的場合中,SchoolMember類被稱為 基本類 或 超類 。而Teacher和Student類被稱為 導出類或子類。

  1. #!/usr/bin/python  
  2. # Filename: objvar.py  
  3.  
  4. class Person:  
  5.     '''Represents a person.'''  
  6.     population = 0 
  7.  
  8.     def __init__(self, name):  
  9.         '''Initializes the person's data.'''  
  10.         self.name = name  
  11.         print '(Initializing %s)' % self.name  
  12.  
  13.         # When this person is created, he/she  
  14.         # adds to the population 

為了使用Python繼承,我們把基本類的名稱作為一個元組跟在定義類時的類名稱之后。然后,我們注意到基本類__init__方法專門使用self變量調用,這樣我們就可以初始化對象的基本類部分。

這一點十分重要——Python不會自動調用基本類的constructor,你得親自專門調用它。我們還觀察到我們在方法調用之前加上類名稱前綴,然后把self變量及其他參數(shù)傳遞給它。注意,在我們使用SchoolMember類的tell方法的時候,我們把Teacher和Student的實例僅僅作為SchoolMember的實例。

另外,在這個例子中,我們調用了子類型的tell方法,而不是SchoolMember類的tell方法??梢赃@樣來理解,Python總是首先查找對應類型的方法,在這個例子中就是如此。如果它不能在導出類中找到對應的方法,它才開始到基本類中逐個查找?;绢愂窃陬惗x的時候,在元組之中指明的。

【編輯推薦】

  1. 如何使Python嵌入C++應用程序?
  2. 深入探討Ruby與Python語法比較
  3. Python學習資料介紹分享
  4. Python學習經驗談:版本、IDE選擇及編碼解決方案
  5. 淺析Python的GIL和線程安全
責任編輯:chenqingxiang 來源: 清華大學出版社
相關推薦

2010-02-23 16:46:27

Python設計語言

2009-12-07 09:58:35

WCF性能

2010-02-05 14:34:11

Android操作系統(tǒng)

2010-02-05 15:22:14

2010-02-03 17:52:11

Python 2.0

2010-03-01 18:21:08

Python測試

2010-02-06 10:42:41

Android Ser生命周期

2010-02-06 17:17:17

Android手機

2009-05-05 17:52:48

系統(tǒng)安全密碼安全Windows

2022-07-29 07:36:01

虛擬機編程語言

2010-02-22 10:18:29

Python代碼

2010-02-24 16:33:28

Python功能

2010-03-01 14:28:46

Python進程

2010-03-10 13:29:01

以太網交換機

2010-07-20 09:45:04

Perl繼承

2010-02-24 09:18:15

Python操作語言

2019-07-28 21:05:47

ICMPIP網絡協(xié)議

2020-11-16 07:03:59

Python內置

2023-10-27 08:42:56

Python字典

2024-06-21 10:42:38

Python開發(fā)
點贊
收藏

51CTO技術棧公眾號