zoukankan      html  css  js  c++  java
  • 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列表找,现在想指名道姓的用某个父类的某个方法,就需要指名道姓的使用
    
    
    
    
  • 相关阅读:
    jQuery 小特效【文本框折叠隐藏,展开显示】【下拉菜单】【颜色渐变】【弹窗+遮罩】
    jQuery 【事件】【dom 操作】
    jQuery 【选择器】【动画】
    LINQ 小项目【组合查询、分页】
    LINQ 【高级查询】
    LINQ 【增、删、改、查】数据绑定
    WebFrom 【文件上传】
    【转】c# 字符串大小写混合转换
    【转】C#之继承
    类库,通用变量,is/as运算符,委托。
  • 原文地址:https://www.cnblogs.com/ledgua/p/11420463.html
Copyright © 2011-2022 走看看