zoukankan      html  css  js  c++  java
  • Python基础18_类与类之间的关系

    类与类之间的关系
        依赖关系. 关联关系. 组合关系. 聚合关系. 继承关系. 实现关系
    一. 依赖关系
        执行某个动作的时候, 需要借助某个东西, 但这个东西不是绝对的, 此时关系是最轻的, 随时可以更换另外一种东西执行动作,  通过参数的传递把另外一个类的对象传递进来
    二. 关联关系. 组合关系. 聚合关系(对象里面埋对象)
        这三个在代码写法上是一样的, 但是含义是不一样的
        1. 关联关系
        两种事物必须是互相关联的, 但在某些特殊情况下是可以更改和更换的
        一对一关系:    在初始化的时候给一个对象的属性设置成另一个类的对象, 把属性和对象联系起来
        一对多关系:
        2. 聚合关系
        属于关联关系的一个特例, 侧重点是xxx和xxx聚合成xxx, 各有各的生命周期, 
        3. 组合关系
        属于关联关系中的一个特例, 组合关系比聚合关系要紧密
    三. 继承关系
        子类在不影响父类的程序运行的基础上对父类进行的扩充和扩展, 这里, 把父类成为超类或者基类, 子类被称为派生类
        类名和对象默认是可以作为字典的key的, 可以hash, 即字典的key可以是对象或者类
        self: 谁调用的就是谁, 类型是根据调用方对象来变换的, 访问顺序: 永远是先找自己的, 自己的找不到再找父类的
    四. 类中的特殊成员
        带双下划线的, 这些方法在特殊的场景会自动的执行
        __init__(self):
            类名()    会自动执行, 初始化操作, 
        __call__(self, *args, **kwargs):
            对象()    会自动执行, 为了对象可以被调用
        __getitem__(self, item):
            对象[key]    会自动执行, 
        __setitem__(self, key, value):
            对象[key] = value    会自动执行
        __delitem__(self, key):
            del 对象[key]    会自动执行
        __add__(self, other):
            对象 + 对象    自动执行
        __enter__(self):
        __exit__(self, exc_type, exc_val, exc_tb):
            with 对象 as 变量     会自动执行, 先执行__enter__, 再执行__exit__
        __str__(self):
            打印对象的时候会自动执行 返回该对象的字符串变现形式
        __repr__(self):
            返回该对象的官方字符串表现形式
        __hash__(self):
            __hash__ == None    对象就不可哈希了
        __new__(cls, *args, **kwargs):
            真正的构造方法, 创建对象时可以开辟空间, 所有对象的创建都是通过__new__实现
            object基类默认有_new__

     __getattr__

       如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数, 如果没有定义这个函数,那么抛出AttributeError异常
    五. 创建对象的步骤
        1. 加载类
        (给类创建一个名称空间, 存放类变量, 此时不创建类对象, 也能使用类变量)
        2. 创建对象: 开辟内存(__new__), 初始化(__init__)
        (先找类, 根据类名来开辟内存执行类中的__new__和__init__, 返回对象)
        3. 操作对象

  • 相关阅读:
    k8s 集群多节点 calico指定网卡
    用Python建立最简单的web服务器
    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
    转化Excel表格为php配置文件
    dockers的容器删除
    php中csv文件的下载
    Ubuntu下mysql的卸载重装
    centos7的web环境安装配置
    lua随机数函数
    Lua 自定义函数string.split
  • 原文地址:https://www.cnblogs.com/guyannanfei/p/10146596.html
Copyright © 2011-2022 走看看