python 类的继承

继承:重用已经存在的数据和方法,减少代码量。

子类继承父类所有的属性和方法

1.类属性的继承

#类属性的继承
class Animal(object):
    run = True
#Dog类继承Animal类
class Dog(Animal):
    pass
#Dog类继承Animal的类属性
print(Dog.run)

2.实例属性继承的两种方法

第一种:父类名.__init__(self,参数名)

第二种:super(子类名,self).__init(name)

#实例属性的继承
class Animal(object):
    def __init__(self,name):
        self.name = name


class Dog(Animal):
    def __init__(self,name,breed,color):
        #Dog类继承Animal实例属性
        #Animal.__init__(self,name)#第一种方式
        super(Dog,self).__init__(name)#第二种方式
        self.breed = breed
        self.color = color

    def info(self):
        print('名称{0},种类{1},颜色{2}'.format(self.name,self.breed,self.color))

#Dog类继承Animal的实例属性
dog = Dog("dog","拉布拉多","黑色")
dog.info()

3.子类不继承父类的实例属性

#实例属性的继承
class Animal(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age


class Dog(Animal):
    def __init__(self,breed,color):
        #不继承父类的实例属性
        self.breed = breed
        self.color = color

    def info(self):
        print('种类{0},颜色{1}'.format(self.breed,self.color))

#Dog类继承Animal的实例属性
dog = Dog("拉布拉多","黑色")
dog.info()

4.类方法的继承

class Animal(object):
    def move(self):
        print("动物都会跑")


class Dog(Animal):
    pass
#Dog类继承Animal的move方法
dog = Dog()
dog.move()

5.子类重写父类的方法,执行子类方法

class Animal(object):
    def move(self):
        print("动物都会跑")


class Dog(Animal):
    def __init__(self, age):
        self.age = age

    def move(self):
        print("狗狗大于{0}个月才会跑".format(self.age))

dog = Dog(0.5)
#子类与父类方法名相同,执行子类代码
dog.move()

6.子类没有构造方法时,对子类进行实例化时,会调用父类的构造方法

class Animal(object):
    def __init__(self,name):
        self.name = name

    def move(self):
        print("动物都会跑")


class Dog(Animal):
    pass
#子类无构造方法,对子类进行实例化时,会调用父类的构造方法
dog = Dog("拉布拉多")

7.子类同时继承多个父类(多个父类要在同一层级),继承原则为从左到右,如果多个父类都有某个方法,则继承左边父类的方法。

class Animal(object):

    def move(self):
        print("动物都会跑")


class Dog1(Animal):
    def move(self):
        print("dog1会跑")

class Dog2(Animal):
    def move(self):
        print("dog2会跑")

#SmallDog类同时继承父类Dog1,Dog2。SmallDog类不能同时继承父类Dog1和Animal类
class SmallDog(Dog1,Dog2):
    pass

dog = SmallDog()
#此处继承的是Dog1的move方法
dog.move()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值