1、繼承
即允許基於乙個現有的類作為起點定義新的類的一種技術
2、父類與子類
在物件導向的術語中,通常描述現有的類為基類(bass class)、父類(parent class)、或者超類(superclass)
基於現有類新定義的類為子類(subclass或childclass)
下面以課程2.1中creditcard類為父類,實現乙個可以評估利息和費用的predatorycreditcard子類為例,說明重寫和擴充套件的舉例實現。
creditcrad父類
class creditcard:
def __init__(self,customer,bank,acnt,limit):
self._customer = customer #使用者名稱,例如:'zhang san'
self._bank = bank #所屬銀行,例如:'招商銀行』'
self._account = acnt #卡賬號,例如:6222023200003451627
self._limit = limit #卡額度,例如:18000
self._balance = 0 #已用額度,例如:8500
def get_customer(self):
return self._customer
def get_bank(self):
return self._bank
def get_account(self):
return self._account
def get_limit(self):
return self._limit
def get_balance(self):
return self._balance
def charge(self,price):
if price + self._balance > self._limit:
return false
else:
sele._balance += price
return true
def make_payment(self,amount):
self._balance -= amount
predatorycreditcrad子類
class predatorycreditcrad(creditcard):
'''由creditcard類擴充套件的新類,提供了三個成員函式:__init__、charge和process_month
這些函式的主體,都依賴呼叫繼承的建構函式來執行大部分初始化處理'''
def __init__(self,customer,bank,acnt,limit,apr):
'''呼叫繼承建構函式的機制依賴於super()語法,呼叫父類中相對應的方法'''
super().__init__(customer,bank,acnt,limit) #呼叫從creditcard父類繼承的__init__方法
self._apr = apr #年利息
def charge(self,price):
'''重寫了繼承的charge方法:
當嘗試收費,但由於信用卡額度不足而被拒絕時,收取5美元的費用'''
success = super().charge(price) #呼叫從creditcard父類繼承的charge方法
if not success:
self._balance += 5
return success #返回繼承的charge方法的值給呼叫者,這樣可使新的收費方法與原來的有類似的外部介面
def process_month(self):
'''拓展了乙個新的process_month方法:
當有乙個未清餘額時,按月收取利息'''
if self._balance > 0:
monthly_factor = pow(1 + self._apr,1/12)
self._balance *= monthly_factor
1、保護成員
一些物件導向的語言,允許宣告的受保護或私有的訪問模式
在python中不支援正式的訪問控制,但通過名字格式可以區別
python怎麼繼承類 python類的繼承
一 概述 二 類的繼承 2.1 繼承的定義 2.2 建構函式的繼承 2.3 子類對父類方法的重寫 三 類繼承的事例 一 概述 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立...
python類的繼承重構 python類繼承與重構
python類繼承與重構 0 物件 通過類定義的資料結構例項。物件包括兩個資料成員 類變數和例項變數 和方法。usr bin python coding utf 8 class employee 所有員工的基類 empcount 0 def init self,name,salary self.na...
Python基礎 22新式類
1 工廠函式 由於型別和類的統一,因而可以子類化python資料型別。但是所有的python 內建的轉換函式現在都是工廠函式。當這些函式被呼叫時,你實際上是對相應的型別進行例項化。比如下面的函式都已經成為工廠函式 int long float complex str unicode list tup...