• 面向对象


    面向对象 - 继承性

    # cheer_xiong
    # (`・ω・´) python
    
    # IDE:就是用啥软件开发
    
    
    # 继承
    """
    就是新建类的一种方式,继承了一个类,类中的属性和方法就在子类中
    父类/基类
    子类/派生类
    新式类 : 只要继承了object类,就是新式类,在py3中,默认都继承object类
            在py2中,需要显示指定继承object
    经典类 : 没有继承object类,就是经典类
                py3中没有经典类
                py2中才有
    继承介绍:
        如何使用继承
            class 类名(父类)
                pass
            新式类和经典类
    
        利用继承减少代码冗余
            # 相同属性可以定义一个父类用来给其他子类调用,减少代码行数
            # 并且调用还是和之前一样
        重用父类查找方式一:
            涉及到属性查找顺序 先找对象,对象没有去类中,找不到去父类,找不到就报错
            但是涉及到多个父类继承,这个就引出以下
                |
        重用父类查找方式二:
            类实例化就会自动调用__init__,如果没有,就去父类中找
            多层继承:
                    class A:
                        a = 'aaa'
                    class B(A):
                        a = 'bbb'
                    class C(B):
                        a = 'ccc'
                    class D():
                        pass
                    # 往上一集查找
            多继承:
                    class A:
                        a = 'aaa'
                    class B:
                        a = 'bbb'
                    class C:
                        a = 'ccc'
                    class D(A,B,C):
                        pass
    
                    # A->B->C 根据从左到右找
    
            # 继承的菱形问题:
            新式类和经典类是不一样的
            *必须都继承一个类,并且不是object类,构成一个菱形*
            新式类:广度优先,最后一个先不找,去找其他的,最后找最后一个
            经典类:深度优先,一条道找到底
    
            # mro 列表,继承顺序查找列表(只在新式类中有)
            print(类名.mro())
            print(类名.__mro__)   # 相同
    
            重用父类方法的第一种方式:
                第一种方法和定义父类没有多大关系,因为定不定一都可以使用 指名道姓 的方式调用
                和继承没有关系
                class A:
                    def __init__(self, name, age):
                        self.name = name
                        self.age = age
    
                class B:
                    def __init__(self, name, age, price):
                        A.__init__(self, name, age)
                        self.price = price
    
                b = B('xc', 18, 100)
                print(b.name)
                print(b.age)
            重用父类方法的第二种方式:
                使用super(),需要继承父类才能调用父类的元素,
                还有一点就是super是严格按照 mro 来找元素了。
                class A:
                    def __init__(self, name, age):
                        self.name = name
                        self.age = age
    
                class B(A):
                    def __init__(self, name, age, price):
                        super().__init__(name, age)
                        self.price = price
    
                b = B('xc', 18, 100)
                print(b.name)
                print(b.age)
    
    
    
    
    
    """
    
    
    
    
  • 相关阅读:
    java环境变量配置
    单文档中自定义文件打开对话框和保存对话框
    汇编小知识(二)
    汇编指令
    汇编小知识(一)
    data directory(数据目录)之 引出表
    data directory(数据目录)之 引入表
    PE Header中的Optional Header中的最后一个成员变量data directory(数据目录)
    紧跟在PE Header后面的Section Table(节表)
    PE Header中的OptionalHeader
  • 原文地址:https://www.cnblogs.com/xiongchao0823/p/11418908.html
Copyright © 2020-2023  润新知