Day 09

继承:子类继承父类,子类可以使用父类的属性和方法,简化代码。

  子类继承父类,父类派生子类

当生成子类对象时,先初始化父类对象,所以如果父类有__init__()方法,并且有属性时,要通过子类的构造赋值一个类可以有多个子类

初始化时...在子类中,调用父类的属性时,在__init__()方法中使用

父类.属性,或self.属性或父类.__init__(self,参数)或super(子类,self).__init__(参数)调用子类的父类的__init__四种方法给父类传参

方法重写:子类继承父类时,子类的方法签名和父类一样,此时子类重写了父类的方法,当生成子类对象时,调用的是子类重写的方法

父类()

子类(父类)

三代继承:子类初始化方法需要祖父,父类及自己的属性,可以调用父类的吃实话方法传参,可以重写父类的方法

构造的顺序依然先构造祖父类,在构造父类,最后构造自己继承object

方法重写:如果子类重写的方法想调用父类的方法时,在子类方法中:父类.方法(self)或super().父类方法()

私有属性、私有方法:均不能在类外面被调用

多继承:类同时继承多个父类,classC(A,B),当有AB均有相同方法,而子类又重写时,调用谁的(子类)方法,如果子类没有方法,则调用哪个父类的方法?(左侧,优先继承的类)

类名.mro(),可以看到所有父类,即搜索顺序

交通工具类

class Vehicle:

def __init__(self):

 self.name=""

'''

def __init__(self,name):

 self.name=name;

print('交通工具类被初始化,创建出来')

'''

def run(self):

 print('交通工具在行驶....')

def show(self):

 print('车的名字是%s'%self.name)


class cixunfu:

 def run(self):

 print('在磁悬浮轨道上行驶..')


卡车,属性:载重,重写行驶的方法

class Truck(Vehicle):

 def __init__(self,name,weith):

  Vehicle.name=name;

  self.ame=name;

Vehicle.__init__(self,name);

super(Truck,self).__init__(name);

self.weith=weith;

print('卡车被初始化 创建出来')


 方法重写

 def run(self):

  父类.方法(self)或super().父类方法()

 super().show()

 super(Truck,self).show()

 Vehicle.show(self);

 print('%s卡车载重%d 吨在行驶....'%(self.name,self.weith))


火车,属性:车箱个数,重写行驶的方法

class Trian(cixxunfu,Vehicle):

 def __init__(self,name,nums):

 self.name=name;

self.nums=nums

 def run(self):

  print('火车在轨道上呜呜的开...')


class student:

def goHome(self,Vehicle):

 vehicle.run()

 print('学生在回家的途中...')


class tui:

def run(self):

 print('2条腿儿在行驶...')


t=Truck('东风',15);

t.run()

c=Trian('京沪高铁',30);

c.run();

ok=Trian('马航730',30);

daizhong=tui();

xinpeng=student();

xinpeng.goHome(daizhong);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值