zoukankan      html  css  js  c++  java
  • pytho类继承与访问控制

    类的三要素之一,继承
     
    从父类继承,就可以直接拥有了父类的方法和属性,减少冗余,增加复用,同时子类也可以定义自己的属性和方法
    继承:class ****(需要继承的类)
    这样就可以让其子类获得父类的方法与属性
     
    父类:
    也称为超类,和基类
     
    子类:
    也称为派生类
     
    具体定义如下:
    class 子类名(基类1,*,*,*):
           语句块
     
    如果类定义中,没有基类列表,等同于继承自object,,在python3中,object是所有对象的基类
     
    python支持多继承,继承也可以多级
     
    特殊属性和方法
    __base__ 类的基类
    __bases__显示当前继承的类
    __mro__显示当前继承链
    mro() 同上                         调用方法 ini.mro( )
    __subclasses__( ) 类的子类列表          调用方法   ini.__subclasses__( )
     
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    类的属性构造 :
     
    继承后的子类中若含有初始化函数__init__,就会覆盖父类的__init__的数据;
    但是可以调用父类的 __init__来执行父类init的方法,他们的调用顺序不同,最后的结果也不同
     
    私有的不可被覆盖
    子类中如果有同名方法或者函数,就会覆盖父类的同名方法或者函数,但是私有属性不会被覆盖,哪个类的私有属性,就会被那个类的实例给加到字典中,不同字典的私有属性,加在实例中的数据名字也不一样
     
    总结:
    双下划线的会被保存到实例的属性中,可以使用property和方法,来让用户拿到这个私有属性
     
     
    从父类继承,自己没有的,就可以到父类中找
    私有的都是不可以访问的,但是本质上依然是改了名称放在这个属性所在类的__dict__,知道这个新名称就可以直接找到这个隐藏的变量,这是一个慎用的方法
     
    继承时,共有的,子类和实例都可以随意访问;私有成员被隐藏,子类和实例不可直接访问,当私有变量所在的类内的方法中可以访问这个私有变量,(property,定义一个函数返回给self)
     
    属性查找顺序,实例的__dict__ -->类 __dict__ 有继承-->父类__dict__
    如果搜索这些地方后没有找到就会抛异常,先找到就立即返回
     
  • 相关阅读:
    08.django之中间件
    07.django之Ajax
    05-Informatica_schema获取元数据
    04-数据库连接启动流程mysql初始化配置文件配置多实例初始化配置文件使用
    javascript设计模式-(八)
    javascript设计模式-(七)
    javascript设计模式-(六)
    javascript设计模式-(五)
    javascript设计模式-(四)
    javascript设计模式-(三)
  • 原文地址:https://www.cnblogs.com/spidermansam/p/7822236.html
Copyright © 2011-2022 走看看