继承:继承就是一个类,继承另外一个类的成员变量(属性)和成员方法

继承的作用:子类通过继承父类的属性和方法,在调用的时候,除了可以使用子类自身的成员方法和属性外,还可以使用父类的属性和方法,因此可以避免书写相同功能的代码,提高了代码整洁性和可维护性。也就是大家讲的看起来很优雅

继承又分为:单继承 和 多继承

语法:

 单继承 : class  (父类名)   pass

多继承: class (父类名1,父类名2,父类名3,......)

区别:没什么太大区别,单继承只继承一个父类身上的属性和方法,多继承继承了多个父类身上的属性和方法,多继承比单继承实现的功能比较丰富,因为继承的父亲多吗?继承就是可以使用父类身上的属性和功能,继承的父类越多功能越发丰富。

#演示单继承
class Emp:
    def work(self):
        print('Emp work')
    def write(self):
        print("csdn")

class pythonDeveloper(Emp):
    def shitp(self):
        print ('develop python')
pythonDev = pythonDeveloper()
pythonDev.work()   #调用了父类中的方法
pythonDev.shitp()  #调用了自身的方法
pythonDev.write()#调用了父类中的方法

python 类中的继承后 子类可以修改父类的变量值 python继承父类属性_成员方法

 演示多继承:


# 多重继承
class PrintByA3:
    def ink (self):
        print("Use ink") #在A3纸上打印文件
class PrintByA4:
    def print (self):
        print("print File in A4")#在A4纸上打印文件
class PrintHandler(PrintByA3,PrintByA4):
    def handleFile(self):
        print(self)
handler = PrintHandler
handler.ink(777)  #为什么要给self 传入值呢? 我也不知道不传入值会出错,可能是python 3.10 的新特性吧
handler.print(777)


python 类中的继承后 子类可以修改父类的变量值 python继承父类属性_成员方法_02

多继承注意事项: 

如果子类继承的多个父类中出现相同名称的方法名,那子类在调用时会调用那个方法呢?

class PrintByA3:
    def print (self):
        print("print File in A3") #在A3纸上打印文件
class PrintByA4:
    def print (self):
        print("print File in A4")#在A4纸上打印文件
class PrintHandler(PrintByA3,PrintByA4):   #现在打印PrintByA3方法
#class PrintHandler(PrintByA4,PrintByA3): #如果打开本行的注释 打印 PrintByA4方法,输出print File in A4
    pass
handler = PrintHandler
handler.print(777)

 得出的结论:在多继承中,如果出现了子类继承多个父类中出现的方法有相同的情况,注意子类子类继承父类的括号中,父类的先后次序,谁在前,就会使用谁的方法。

 关于继承还有几点扩展:

复写使用父类成员:


子类继承父类的成员属性和成员方法后,如果父类不能满足要求,那么可以进行复写,复写就是在子类中修改来自父类的属性和方法。


 复写的语法:在子类中重新实现同名成员方法或成员属性即可  

class  fuck
     age = 20    # 属性
     sex = '男'
     def  csdn (self):  # 方法
        print(学python来csdn)
class  fuck2(fuck)
    age = 22 # 属性
    sex = '未知'
    def csdn(self) # 方法
       print("学MySQL睡大觉,一教就会")

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员

如果需要使用被复写的父类的成员,需要特殊的调用方式:

方式1:


调用父类成员


使用成员变量:父类名.成员变量

使用成员方法:父类名.成员方法(self)

方式2:


使用 super() 调用父类成员


使用成员变量:super().成员变量

使用成员方法:super().成员方法()

python 类中的继承后 子类可以修改父类的变量值 python继承父类属性_子类_03

复写不是将原来父类的属性和方法彻底修改,你可这样理解,子类根据父类的属性名和方法名重新给自己创建一套新的属性和方法除了,属性名和方法名和父类一致,功能发生了变化,其实你可以通过 父类名.成员变量  调用父类的属性, 父类名.成员方法(self)

总结:哪里没太看懂,可以向我留言,空闲时间内会及时回复