测牛学堂:软件测试要学习的python知识总结之面向对象相关(继承和重写总结)

47 阅读2分钟

python面向对象之继承

如果多个类中存在相同的代码逻辑,我们可以优化,把相同逻辑的代码抽取封装到父类中,再通过继承关系,直接实例化子类对象,并调用父类中的方法使用即可。
继承的语法:
class 类A:
pass
class 类B(类A):
pass
这样我们就是说类B继承了类A,类A称之为父类,类B称之为子类。
代码示例:

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

    def eat(self):
        print(f'{self.name} can eat')

class Cat(Animal):
    def say(self):
        print(f'{self.name} can miao')


tom1 = Cat('tom',19)
tom1.say() # tom can miao

注意:
1 继承描述的是类与类之间的关系
2 继承的优势就是减少代码冗余,提高编程效率
3 在继承关系中,子类可以拥有父类的所有属性和方法。
4 继承具有传递性,c继承b,b继承a,则c可以使用a的所有属性和方法
5 实例对象的方法,会优先在自己的类中查找,如果没有,再去父类中查找

面向对象的重写

重写是在子类中定义了和父类名字一样的方法,就称为重写。
重写的原因在于父类中的代码功能不能满足子类对象的需要。
覆盖式:父类中的代码全部不要,直接重新定义和父类名字一样的代码即可。
扩展式:父类中的功能还需要,只是添加新的功能。
写法:1 在子类中定义和父类相同名字的方法
2 使用super关键字调用父类的方法即可实现。

class Animal:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def eat(self):
        print(f'{self.name} can eat')

class Cat(Animal):
    def eat(self):
        super().eat()
        print(f'{self.name} can eat checken')

tom1 = Cat('tom',19)
tom1.eat()