• python学习手册笔记——39.元类


    00.比99%的用户所担心的魔力要更深。如果你犹豫是否需要他们,那你不需要它们(真正需要元类的人,能够确定地直到需要它们,并且不需要说明为什么需要)。“因为某物很酷”而编写它,似乎不是一种合理的判断,除非你在做试验或者学习。

    01.元类就是用来创建类的“东西”。你创建类就是为了创建类的实例对象。

    02.


    03.元类的主要目的就是为了当创建类时能够自动地改变类。

    04.元类修改:
    内省属性:__class__和__dict__这样的特殊属性允许我们查看Python对象的内部实现方面
    运算符重载方法:__str__和__add__这样特殊命名的方法。
    属性拦截方法:__getattr__、__setattr__和__getattribute__允许包装的类插入自动运行的代码,这些代码可以验证属性请求并且将它们委托给嵌入的对象
    类特性:内置函数property允许我们把代码和特殊的类属性关联起来,当获取、复制或删除该属性的时候就自动运行代码。尽管不想前面一段所介绍的工具那样通用,特性考虑到了访问特定属性时候的自动代码调用。
    类属性描述符:__get__、__set__和__delete__处理程序方法,当分配给该类的一个实例的属性被访问的时候自动运行它们
    函数和类装饰器:装饰器的特殊的@可调用用法,运行我们添加当调用要给函数或创建一个类实例.装饰器语法插入名称重新绑定逻辑,在函数或类定义语句的末尾自动运行该逻辑——装饰的函数和类名重新绑定到拦截了随后调用的可调用对象。

    05.元类
    *提供一种更为正式和明确的结构
    *有助于确保应用程序猿不会忘记根据一个API需求来扩展它们的类
    *通过把类定制逻辑工作化到一个单独的位置中,避免代码冗余及其相关的维护成本

    06.类是类型,类型也是类:
    *类型由派生自type得类定义
    *用户定义得类是类型类得实例
    *用户定义得类是产生它们自己得实例得类型

    07.元类是Type的字类
    *type是产生用户定义的类的一个类
    *元类是type类的一个字类
    *类对象是type类的一个实例,或一个子类
    *实例对象产生字一个类

    08.一条class语句的末尾:
    class = type(classname, superclasses, attributedict)
    type.__new__(typeclass, classname, superclasses, attributedict)
    type.__init__(class, classname, superclasses, attributedict)

    09.好的程序也理解简单是最好的工程,并且高级工具也应该再在需要的时候使用。

  • 相关阅读:
    electrica writeup
    C++ Tips and Tricks
    net-force.nl/steganography writeup
    3*n/2
    C++ 关键字浅谈
    MindMaster激活教程
    gitignre
    python pil 安装
    ubuntu 阿里云安全配置
    阿里云 centos 环境配置与 django 部署
  • 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/11238629.html
Copyright © 2020-2023  润新知