python中魔术方法简述

发布时间:2019-09-18 07:24:51编辑:auto阅读(1659)

    魔术方法:***
    python中魔术方法简述
    实例化:
    new :
    实例化一个对象 方法很少使用,一般使用return super().))new(cls)基类ibject方法来创建实例并返回。

    hash:
    返回一个整数,如果定义这个方法该类的实例就可hash。
    eq:
    对应==操作符,判断2个对象是否相等,返回bool值。
    hash方法只是返回一个hash值作为set的key,但是去重,还需要eq来判断2个对象是否相等。只是hash冲突,不能说明两个对象是相等的。因此,一般来说提供hash方法是为了作为set或者dict的key,所以去重要同时提供eq方法。
    如果一个类不能hash,就把hash设置为None。

    bool

    python中魔术方法简述

    可视化:
    python中魔术方法简述

    运算符重载:
    python中魔术方法简述
    python中魔术方法简述

    容器相关方法:

    python中魔术方法简述
    python中魔术方法简述

    可调用对象:
    python中一切皆对象,函数也不例外。
    call类中定义一个该方法,实例就可以像函数一样被调用。
    python中魔术方法简述

    上下文管理:
    python中魔术方法简述

    实例化对象时,并不会调用enter进入with语句块调用enter方法,然后执行语句块,最后离开时,调用exit方法。
    enter方法返回值就是上下文中使用的对象,with语法会把它的返回值赋予as字句的变量。
    python中魔术方法简述
    python中魔术方法简述

    反射:
    运行时,区别于编译时,指的是程序被加载到内存中执行的时候。
    reflection,指的是运行时获取类型定义信息。
    简单说,再Python中,能够通过一个对象,找出其type,class,attribute,method的能力。
    具有反射能力的函数有:type(),isinstance(),callable(),dir(),getattr()
    python中魔术方法简述
    python中魔术方法简述
    python中魔术方法简述
    python中魔术方法简述

    delattr():
    可以阻止通过实例删除属性的操作,但是通过类依然可以删除属性。

    getattribute:
    除非明确知道用该方法做什么,不然少用。
    python中魔术方法简述

    描述器 Descriptors:
    所用魔术方法:get(),set(),delete()
    python中魔术方法简述
    python中魔术方法简述

    x= A()时,A已经产生了实例,则init已运行。
    python中魔术方法简述

    运行结果来看,只有类属性是类的实例才行。
    python中魔术方法简述

关键字