zoukankan      html  css  js  c++  java
  • 类的继承

    类的继承

    基本概念

    面向对象三要素之一,继承Inheritance

    继承(也叫派生)

    class Cat(Animal)这种形式就是从父类继承,括号中写上继承的类的列表.

    阶乘可以让字类从父类获取特征(属性和方法)

    父类

    Animal就是Cat的父类,也称基类,超类.

    子类

    Cat就是Animal的字类,也称派生类

    定义

    class 子类名(基类1[,基类2,...]):
        语句块
    

    如果类定义时,没有基类列表,等同于继承子object.在Python3中,object类时所有对象的根基类.

    class A:
        pass
    #等价于
    class A(object):
        pass
    
    查看属性的方法
    属性方法 含义
    __bases__ 查看返回类的基类的元组.是类的方法,不会返回爷爷类
    mro()方法 显示方法查找顺序,调用__mro__,返回查找顺序列表,是类的方法,实例不能用
    __subclasses__() 类的子类列表

    总结

    继承时,公有的,子类和实例都可以随意访问;私有成员被隐藏,子类和实例不可直接访问,当私有变量所在的类内的方法中可以访问这个私有变量.

    Python通过自己的一套实现,实现和其他语言一样的面向对象的继承机制.

    属性查找顺序

    实例的__dict__-->类__dict__-->(如果有继承)父类__dict__

    这些地方都搜索没找到就会抛异常,先找到就立即返回.

    方法的重写,覆盖(override)

    同名方法或属性在调用过程中,类似函数执行,前面的属性会被后面的同名属性覆盖.

    静态方法和类方法

    @staticmethod静态方法

    @classmethod类方法

    这些方法都可以覆盖,原理相同,属性字典的搜索顺序

    继承中的初始化

    super()方法

    super()可以访问到父类的属性

    子类继承父类的时候,最好加上super().__init__()

    作为一个好习惯,如果父类定义了__init__方法,就应该在子类的__init__中调用它

    一个原则:自己的私有属性,就该自己的方法读取和修改,不要借助其他类的方法,即使时父类或者派生类的方法.

    两个方法

    isinstance(o,c) 判断o对象是不是c类或(c类的父类,祖父类,,,)的实例

    issubclass(o,c) 判断o类是不是c类或者(c类的父类,祖父类,,,的子类

  • 相关阅读:
    iOS深入学习(Block全面分析)
    iOS 多快好省的宏定义
    1.ARC和非ARC文件共存
    简单的实现UIpicker上面的取消确定按钮
    ios 简单的倒计时验证码数秒过程实现
    jquerymobile 基础教程
    得到UIView中某个非子视图在UIView中的位置
    状态栏问题
    html表格,列表
    html简单样式
  • 原文地址:https://www.cnblogs.com/agsol/p/11647842.html
Copyright © 2011-2022 走看看