小何来猜题一(遇到问题及解决方式)

  1. 编写程序并测试,有一个汽车类Vehicle,类中的私有数据成员为车轮个数wheels和车重weight;小车类Car是汽车类vehicle派生类,其中包含载客人数passenger_load,默认4人;卡车类Truck是汽车类vehicle派生类,其中包含载客人数passenger_load和载重量payload。
class Vehicle(object):
    def __init__(self,wheels,weight):
        self.setWheels(wheels)
        self.setWeight(weight)
    def setWheels(self,wheels):
        self.__wheels = wheels
    def getWheels(self):
        return self.__wheels
    def setWeight(self,weight):
        self.__weight = weight
    def getWeight(self):
        return self.__weight
    def show(self):
        print("轮胎数为:%d,车重为:%d"%(self.__wheels,self.__weight))
class Car(Vehicle):
    def __init__(self,wheels,weight,passenger_load = 4):
        super().__init__(wheels,weight)
        self.setPassenger_load(passenger_load)
    def setPassenger_load(self,passenger_load):
        self.__passenger_load = passenger_load
    def getPassenger_load(self):
        return self.__passenger_load
    def show(self):
        print("轮胎数为:%d,车重为:%d,载客人数为:%d"%(self.getWheels(),self.getWeight(),self.getPassenger_load()))
class Truck(Vehicle):
    def __init__(self,wheels,weight,passenger_load,payload):
        super().__init__(wheels,weight)
        self.setPassenger_load(passenger_load)
        self.setPayload(payload)
    def setPassenger_load(self,passenger_load):
        self.__passenger_load = passenger_load
    def setPayload(self,payload):
        self.__payload = payload
    def getPassenger_load(self):
        return self.__passenger_load
    def getPayload(self):
        return self.__payload
    def show(self):
        #print("轮胎数为:%d,车重为:%d,载客人数为:%d,载重量为:%d."%(self.__wheels,self.__weight,self.__passenger_load,self.__payload))
        print("车轮数为:%d。重量为:%d。载客人数为:%d。载重量为:%d。" % (self.getWheels(), self.getWeight(), self.getPassenger_load(),self.getPayload()))


vehicle=Vehicle(10,150)
vehicle.show()
car=Car(5,50)
car.show()
car=Car(5,50,5)#来看是否修改了默认值
car.show()
truck=Truck(12,200,12,200)
truck.show()


 遇到的问题:

        1.在子类的构造方法中调用父类的构造方法时,super(Vehicle,self)__init__(wheels,weight),会报错,原因是:呃呃呃 ,不太清楚,反正把super后面的括号内容去掉就没有报错哦。效果可能不如:Vehicle.__init__(self,wheels,weight)。

        2.在子类的show方法中,输出值时,不能用self.__名字来输出。要使用self.get名字来调用。这个的原因很简单,只有在子类中新增加的对象可以通过self.__名字来输出。(因为你打出“self.”的时候,系统的快捷方式里就只有两个新增的对象)如果想用super输出通过语句super().show()来实现(在下一篇中使用)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静待花开︳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值