Python面向对象编程-3·继承

一、继承的概念:

  • 子类 拥有 父类 的所有 方法 和 属性
  • 子类 继承自 父类,可以直接 享受 父类中已经封装好的方法,不需要再次开发
  • 子类 中应该根据 职责,封装 子类特有的 属性和方法
继承图例.png

二、继承的语法结构:

class 类名(父类名):
    pass

三、继承的使用示例:

# 父类
class Role:
    def __init__(self, name, weapon):
        self.name = name     #self 为实例本身的名称
        self.weapon = weapon     #self 为实例本身的名称   
    def show_me(self):      #self 为实例本身的名称
        print('我是%s,我用的武器是%s' % (self.name, self.weapon))

# 子类1
class Warrior(Role):
    def attack(self, target): #子类Warrior定义自己的方法
        print('与%s近身肉搏' % target)

# 子类2
class Mage(Role):
    def attack(self, target): #子类Mage定义自己的方法
        print('远程打击%s' % target)

if __name__ == '__main__':
    lb = Warrior('吕布', '方天画戟 ')
    km = Mage('孔明', '羽扇')
    lb.show_me()
    km.show_me()
    lb.attack('张飞') #子类的对象调用自己的方法attack()
    km.attack('曹操')

四、多重继承:

  • Python 允许多重继承,即:一个类可以是多个父类的子类,子类可以拥有所有父类的属性
  • 在使用方法时,python有自己的查找顺序:自下向上,自左向右(就近原则)

五、多重继承的语法结构:

class 类名(父类1,父类2,父类3...):
    pass

六、多重继承使用示例

class A:
    def func1(self):
        print('A func')
    def func4(self):        #类A中,包含同样的方法名func4()
        print('A func4')

class B:
    def func2(self):
        print('B func')  
    def func4(self):        #类B中,包含同样的方法名func4() 
        print('B func4')

class C(A, B):# 多重继承A和B
    def func3(self):
        print('C func')

if __name__ == '__main__':
    c1 = C()
    c1.func1()
    c1.func2()
    c1.func3()
    c1.func4()

[root@localhost xxx]# python3 multi_extend.py
A func
B func
C func
A func4    # 就近原则先打印A类中的func4

版权声明:
作者:siwei
链接:https://www.techfm.club/p/55245.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>