#-------------------
# 父類別, 運費
#-------------------
class Trans():
def __init__(self, size):
self.__size = size
@property
def size(self):
return self.__size
@size.setter
def size(self, size):
self.__size = size
def price(self):
if self.size < 60:
return 130
elif self.size < 90:
return 170
elif self.size < 120:
return 210
elif self.size < 150:
return 250
else:
raise ValueError('此包裹尺寸不能運送')
#-----------------------
# 子類別, 低溫運費
#-----------------------
class ColdTrans(Trans):
def __init__(self, size):
super().__init__(size)
#覆寫父親的price()方法
def price(self):
if self.size < 60:
return 160
elif self.size < 90:
return 225
elif self.size < 120:
return 290
else:
raise ValueError('此低溫包裹尺寸不能運送')
#產生一個運費物件
t = Trans(65)
print(f'{t.price()}元')
#產生一個低溫運費物件
c = ColdTrans(65)
print(f'{c.price()}元') #呼叫兒子的price()方法
請以以上的例子為基礎,再增加1個「離島運費」類別,名稱是「IslandTrans」。「離島運費」也繼承「運費」,它有1個建構元以設定包裹尺寸,另有一個price()方法以計算運費。當尺寸小於60時,運費為220元;當尺寸小於90時,運費為280元;當尺寸小於120時,運費為320元;當尺寸小於150時,運費為360元;尺寸超過150是一種錯誤。