码迷,mamicode.com
首页 > 编程语言 > 详细

python 类的继承

时间:2018-03-15 13:16:25      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:继承   语法   类的继承   问题   完全   elf   cat   ini   类的方法   

类的继承

  • 相关概念:

    • 继承:父类的属性和方法子类可以直接拥有称为继承

    • 派生:子类在父类的基础上衍生出来的新的特征(属性和方法)

    • 总结:其实他们是一回事,只是描述问题的角度侧重点不同(继承侧重相同点,派生侧重不同点)

  • 相关语法:

    
    
    # class Animal(object):
      # 当没有指定父类时,相当默认父类为object
      class Animal:
          def __init__(self, name):
              self.name = name
    ?
          def eat(self):
              print(小动物喜欢一天到晚吃个不停)
                
    # 继承自Animal
    class Dog(Animal):
        pass
    ?
    d = Dog(旺财)
    # 直接拥有父类的方法
    d.eat()
    # 直接拥有父类的属性
    print(d.name)

     

  • 派生:子类可以扩充属性和方法

    
    
    class Animal:
        def run(self):
            print(小动物喜欢到处乱跑)
            
    class Rabbit(Animal):
        # 添加方法
        def eat(self):
            print(爱吃萝卜和青菜)
            
    xiaobai = Rabbit()
    xiaobai.run()
    xiaobai.eat()
    # 添加属性
    xiaobai.color = white
    print(xiaobai.color)

     

  • 重写:

    • 父类的方法完全不合适,子类需要全部的覆盖

    • 父类的方法合适,但是需要完善

    • 示例:

    
    
    class Animal:
          def run(self):
              print(小动物喜欢到处乱跑)
    ?
          def eat(self):
              print(小动物也是一天三顿)
                
    class Cat(Animal):
        # 当父类的方法完全不合适时,可以覆盖重写
        def run(self):
            print(俺走的是猫步)
    ?
        # 父类的方法合适,但是子类需要添加内容完善功能
        def eat(self):
            # 调用父类方法,不建议使用
            # Animal.eat(self)
            # super(Cat, self).eat()
            # 类名及self可以不传
            super().eat()
            print(不过俺喜欢吃鱼)
    ?
    jiafei = Cat()
    jiafei.run()
    jiafei.eat()

     

  • 多继承

    • 概念:一个类可以有多个父类

    • 示例:

    
    
    class A:
        def eat(self):
            print(eat func of A)
         
    class B:
        def eat(self):
            print(eat func of B)
            
    # 多继承,多个父类使用逗号隔开
    class C(B, A):
        def eat(self):
            # 当多个父类拥有相同的方法时,会按照继承时的先后顺序进行选择
            # super().eat()
            # 如果非要使用后面的类的方法时,可以明确指定进行调用
            A.eat(self)
            
    c = C()
    c.eat()

python 类的继承

标签:继承   语法   类的继承   问题   完全   elf   cat   ini   类的方法   

原文地址:https://www.cnblogs.com/kiki5881/p/8572680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!