美文网首页
使用元类

使用元类

作者: 噜噜迅儿 | 来源:发表于2018-07-24 09:43 被阅读0次

type()函数既可以返回一个对象的类型,又可以创建出新的类型。

def fn(self, name='world'):
    print('hello, %s.' % name)

Hello = type('Hello', (object,), dict(hello=fn))
'''
param name: 类的名称
param bases: 类继承的父类集合
param dict: class的方法名称与函数绑定
'''

通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class。

metaclass

除了使用type()动态创建类以外,要控制类的创建行为,还可以使用metaclass。

先定义metaclass,就可以创建类,最后创建实例。

'''
param cls: 当前准备创建的类的对象;
param name: 类的名字;
param bases: 类继承的父类集合;
param attrs: 类的方法集合。
'''
class ListMetaclass(type):
    def __new__(cls, name, bases, attrs):
        attrs['add'] = lambda self, value: self.append(value)
        return type.__new__(cls, name, bases, attrs)

class Mylist(list, metaclass=ListMetaclass):
    pass

>>> L = MyList()
>>> L.add(1)
>> L
[1]

相关文章

  • Python 面向对象高级编程

    使用__slots__ 使用@property 多重继承 定制类 使用枚举类 使用元类

  • 使用元类

    type()函数既可以返回一个对象的类型,又可以创建出新的类型。 通过type()函数创建的类和直接写class是...

  • 享元模式

    享元角色抽象类 享元角色抽象类实现类 享元角色工厂类 场景使用

  • Python元类

    元类 元类就是用来创建类的,元类就是类的类。 实例 关于type()函数的使用戳这里 元类为一个函数 元类为一个类

  • 29.Python之面向对象的元类

    Python之面向对象的元类 什么是元类?类的类就是元类,元类创建对象。使用class定义的类,用来产生程序员自己...

  • Python 进阶丨如何创建你的第一个 Python 元类?

    摘要:通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类...

  • Python使用元类

    type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。比方说我们...

  • 使用元类,metaclass

    廖雪峰的博客讲的太好了 https://www.liaoxuefeng.com/wiki/001374738125...

  • 元类使用示例

    知识储备:元类的作用:拦截类的创建,做一些自定义的操作,并将修改过的类返回给调用者。 案例演示:现在有一个类Stu...

  • 使用枚举类和元类

    获得了Month类型的枚举类,可以直接使用Month.Jan来引用一个常量 创建类的三种方式: 正常情况下,我们都...

网友评论

      本文标题:使用元类

      本文链接:https://www.haomeiwen.com/subject/hmxnpftx.html