編程設計一個基類汽車類Vehicle,包含最大速度MaxSpeed,weight兩個實體私有屬性;設計一個派生子類自行車(Bicycle)類,增加1個實體私有屬性高度(height)和1個成員函式SetMaxSpeed實作給父類的實體屬性MaxSpeed的賦值。
要求:
1) 根據以上描述設計類,并在主函式中創建子類的實體化物件,并設定物件的MaxSpeed值。
2) 利用property將height設定為可讀、可修改的屬性。
class Vehicle(object):
def __init__(self,MaxSpeed,weight):
self.__MaxSpeed=MaxSpeed
self.__weight=weight
class Bicycle(Vehicle):
def __init__(self,weight,height):
super().__init__(0,weight)
self.__height=height
def SetMaxSpeed(self,speed):
Vehicle.MaxSpeed=speed
def __get(self):
return self.__height
def __set(self,h):
self.__height=h
def __del(self):
del self.__height
height=property(__get,__set,__del)
def show(self):
print(self.__height)
b=Bicycle(4,0.7)
b.SetMaxSpeed(40)
b.show()
b.height=1
b.show()
為什么這里的super().__init__(0,weight),不能用類名.方法名()來寫,里面為什么不用加self
uj5u.com熱心網友回復:
super().__init__(0,weight)super()代表基類。只有當你定義類的方法時,方法的第一個引數默認為self,呼叫的時候這個self就不存在啊。這里類似對Vehicle基類init方法的呼叫,不需要self
uj5u.com熱心網友回復:
如果要用類名.方法名()來寫的話,那就是 Vehicle.__init__(self,0,weight).這是是呼叫執行,不是定義。
所以通過實體方法執行的話就是 實體.__init__(0,weight),解釋成類方法就是 Vehicle.__init__(實體,0,weight)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/218780.html
上一篇:什么是Advanced Color ePaper (ACeP) 多彩墨水屏及其應用
下一篇:匯編
