python 基础 继承特性(1)

本文深入讲解Python中的继承概念,包括单继承与多继承,子类与父类的关系,以及如何通过继承提高代码重用率。同时,介绍了方法复写、super()方法的使用,以及如何在子类中调用父类方法。

1 什么是继承

继承就是可以让类和类之间产生父子关系,子类可以拥有父类的静态属性和方法。

继承就是可以获取另外一个类中的静态属性和普通方法。(并非所有方法)

在Python中,新建的类可以继承一个或者多个父类,父类又称为基类或超类,新建的类称为派生类或子类

注意  python中的继承分为单继承多继承

2 继承中的子类和父类的概念

父类:用于被继承的类,称之为父类,也叫做基类,或者超类

子类:继承其他类的类,称之为子类 也叫做派生类

3继承的作用

提高代码的重用率

练习1 创建Dog类和Cat类

class Dog:
    
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def eat(self):
        print('吃。。。')

    def sleep(self):
        print('睡。。。')
    
    def look_door(self):
        print('能看门')
    

class Cat:

    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def eat(self):
        print('吃。。。')

    def sleep(self):
        print('睡。。。')

    def climb(self):
        print('会爬树')

    

以上代码dog类 和cat 类的方法是一模一样的  所以可以建立一个父类  实现代码重用

class Pet:
    
    def __init__(self,name,age):
        self.name = name
        self.age = age
    
    def eat(self):
        print('吃。。。')

    def sleep(self):
        print('睡。。。')

class Dog(Pet):

    def look_door(self):
        print('能看门')

class Cat(Pet):
    def climb(self):
        print('会爬树')

dog = Dog('京东狗', 8)
dog.eat()
dog.sleep()
dog.look_door()
print(dog)
cat = Cat('天猫', 10)
cat.eat()
cat.sleep()
cat.climb()
    
    

以上两段代码的效果一致,明显下面的更加简洁 

4 查看继承的父类

格式  : 类名.__bases__

注意:

(1).python3中如果一个类没有继承任何类,默认继承object类。我们管这种类叫做新式类。

(2).object类,是python中的祖宗,所有的类都是从object类中继承下来的。

练习 查看 Cat  Pet两个的父类

"""
练习一中的代码
"""

print(Cat.__bases__)
print(Pet.__bases__)

"""
(<class '__main__.Pet'>,)
(<class 'object'>,)
"""

5 方法的复写

子类中定义了和父类相同的方法,我们叫做方法的复写(派生方法)

实例对象调用此方法的时候再回调用自己类中的方法了

什么时候使用方法的复写

当父类的方法不能满足子类的需求时,就可以使用方法的复写

class Person(object):

    def eat(self):
        print('吃饭。。。')

class Student(Person):

    def eat(self):
        print('去食堂吃饭')

class Boss(Person):

    def eat(self):
        print('去酒店吃饭')


student = Student()
student.eat()
boss = Boss()
boss.eat()

"""
去食堂吃饭
去酒店吃饭
"""


6super() 方法

当子类和父类有相同的方法的时候,子类会默认调用自己的方法,而不能使用父类的方法

如果想使用父类的方法 我们就可以使用super()方法来调用父类的方法

1 super(类名,对象名).方法( )既可以在类的内部也可以在类的外部使用

2 父类类名.方法名(self)  ----->Pet.eat(self)既可以在内部也可以在外部使用

3 super().eat()  --->>只ongoing能在类的内部使用

class Pet(object):


    def eat(self):
        print('吃...')

    def sleep(self):
        print('睡觉')



class Dog(Pet):

    def look_house(self):
        print('看大门...')

    def eat(self):
        # super().eat() # 调用的是父类的eat()方法。只能在类的内部
        # Pet.eat(self)  # 父类类名.方法名(self)   可以写到外部

        print('吃狗粮...')


dog = Dog()
# Pet.eat(dog)
super(Dog, dog).eat()  # super(类名,对象名).方法()  也可用到内部
dog.eat()

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值