python 面向对象专题(三):继承

2021-01-26 01:13

阅读:406

  • 定义:只有一个父类

  • 执行父类的属性和方法:

    1.类名执行父类的属性和方法

    2.派生类对象执行父类的属性和方法

    ? 1.查询顺序:
    ? 单向不可逆,子类可以使用父类的属性和方法,父类不可以使用子类的属性和方法

    ? 2.实例化对象时必须执行__init__方法,类中没有,从父类找,父类没有,从object类中找。

  • 既要执行子类的方法,又要执行父类的方法

    方法一:不依赖继承 / 父类.func(对象,其他参数)

    class Animal(object):
        type_name = "动物类"
        def __init__(self,name,sex,age):
            self.name = name
            self.age = age
            self.sex = sex
        def eat(self):
            print("吃东西")
    class Person(Animal):
        def __init__(self,name,sex,age,mind):
            Animal.__init__(self,name,sex,age)
            self.mind = mind
        def eat(self):
            super().eat()
            print(f{self.name}会吃饭)
    
    p1 = Person("张三","",18,"有思想")
    p1.eat()

     

    方法二:依赖继承 / 利用super

    class Aniaml(object):
       type_name = 动物类
       def __init__(self,name,sex,age):
               self.name = name
               self.age = age
               self.sex = sex
       def eat(self):
           print(吃东西)
    class Person(Aniaml):
       def __init__(self,name,sex,age,mind):
    {super(Person,self).__init__(name,sex,age)} (完整写法) 
           super().__init__(name,sex,age)
           self.mind = mind
       def eat(self):
           super().eat()
           print(%s 吃饭%self.name)
    class Cat(Aniaml):
       pass
    p1 = Person(张三,,18,有思想)
    print(p1.__dict__)
    
    # 利用super,super().func(参数)
    # super.__init__执行父类
    # 执行父类的__init__方法,重构父类方法.

    单继承应用示例:

    class Base:
        def __init__(self,num):
            self.num = num
        def func1(self):
            print(self.num)
            self.func2()
        def func2(self):
            print(222,self.num)
    class Foo(Base):
        def func2(self):
            print(222,self.num)
    lst = [Base(1),Base(2),Foo(3)]
    for obj in lst:
        obj.func1()
        
    # 结果:
    1
    222 1
    2
    222 2
    3
    222 3

     

  • 单继承总结:

    1. 面向对象中super的作用:

    ? super().func(参数) 重构父类的方法,严格按照对象从属类的mro顺序执行


评论


亲,登录后才可以留言!