• Python 继承


    继承

    什么是继承

    继承讲的通俗一些就是一个类,衍生出了一个类。通常叫做父类与子类python中一个子类可以继承多个父类,说白了就是可以找多个干爹罩着自己

    类的继承

    ####类的继承
    class A:
        def a1(self):
            print('aaa。。。。。')
    class B(A):
        pass
        # def a1(self):
        #     # print('bbbbb......')
        #     pass
    b1 = B
    b1.a1(b1)
    

    多类继承

    ![无标题](F:无标题.png)class A:
        def a1(self):
            print('aaa。。。。。')
    class B:
        pass
        # def a1(self):
        #     print('bbbbb......')
        #     pass
    class C(A,B):
        def a1(self):
            print('ccccc......')
    c1 = C
    c1.a1(c1)
    

    无标题

    子类重构父类方法

    子类可以将父类已经有的方法重新写入

    ####通过
    class Student(Person):
        school = 'yyyy'
        def __init__(self,name,age,course):
            #如何重用父类的__init__方法
            Person.__init__(self,name,age)
            self.course=course
        def study(self):
            Person.study(self)
            print("%s学生在学习"%self.name)
    
    
    stu1=Student('wed',19,"Python")
    # stu1.school='xxx'
    print(stu1.school)
    stu1.study()
    
    #######第二版
    class A:
        def a1(self):
            print('aaa。。。。。')
        def __init__(self,name='xigua'):
            self.name = name
            print(name)
    class C(A):
        # def a1(self):
        #     print('ccccc......')
        def __init__(self,name):
            A.__init__(self,name)
            self.name = name
    c1 = C
    c1.__init__(c1,'nihao')
    

    通过super方法修改

    class Person(object):
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
    class Student(Person):
        school = 'yyyy'
        def __init__(self,name,age,course):
            #super()相当于得到了一个特殊对象,第一个参数不需要传,调用绑定方法,会把自己传过去
            ##########    self不需要传,不需要传
            # super().__init__(name,age)
            #看到别人这么写:super(类名,对象)  在py3中为了兼容py2
            #在py3中这么写和省略写法完全一样
            #在py2中必须super(Student,self)写
            super(Student,self).__init__(name,age)
            self.course=course
    
    stu=Student('nick',19,'python')
    print(stu.name)
    print(stu.age)
    print(stu.course)
    
    总结,有继承关系的时候,通常用super,
    指名道姓的方式在什么情况下用?
    1 没有继承关系
    2 如果继承了多个父类,super是按照mro列表找,现在想指名道姓的用某个父类的某个方法,就需要指名道姓的使用
    
    
    
    
  • 相关阅读:
    fatal: protocol error: bad line length character: This
    httpd: apr_sockaddr_info_get() failed for bogon
    Go语言函数
    Go语言流程控制
    进制转换
    Go语言运算符
    LeetCode 62. Unique Paths
    LeetCode 61. Rotate List
    asdfasdfasdf
    开发者,别让自己孤独
  • 原文地址:https://www.cnblogs.com/ledgua/p/11420463.html
Copyright © 2020-2023  润新知