美文网首页
关于type()元类的一些笔记

关于type()元类的一些笔记

作者: bboyAyao | 来源:发表于2018-05-22 18:55 被阅读0次

type函数:可以生成一个类

type ( 类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 添加的属性是类属性,并不是实例属性。

class A:
    pass
class B:
    pass
class A(B): 
    num = 1

#上面创建类等价于下面type()创建的形式                                              
A = type('A',(B,),{'num':1})  #第二个参数加逗号才表示元组     
print(A)
print(A.num)
print(A.__mro__)  #查看继承哪些父类

#-----------运行结果----------------
<class '__main__.A'>
1
(<class '__main__.A'>, <class '__main__.B'>, <class 'object'>)

元类:

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

元类的一些作用:

1.拦截类的创建
2.修改类
3.返回修改之后的类

例子:

决定在你的模块里所有的类的属性都应该是大写形式。有好几种方法可以办到,但其中一种就是通过在模块级别设定metaclass方法

def aa(future_class_name,future_class_parent,futurn_class_attr):
    newArr ={}
    for n,v in futurn_class_attr.items():
        if not n.startswith("__"):
            newArr[n.upper()] = v
    return type(future_class_name,future_class_parent,newArr)

#以下python3写法 python2写法为 在类里面添加属性 __metaclass__ = aa
class A(metaclass = aa):
    num = 1
    name = "Ydd"
    __year = 2018

print(hasattr(A,"num"))  #hasattr判断A类里是否有属性“num”
print(hasattr(A,"NUM"))
print(A.__dict__)    #查询A中所有属性
#-------------运行结果--------------
False
True
{'NUM': 1, 'NAME': 'Ydd', '_A__YEAR': 2018,........}

相关文章

  • 关于type()元类的一些笔记

    type函数:可以生成一个类 type ( 类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字...

  • Python元类

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

  • 元类

    # 元类 : 创建类 type #1.type 创建 类 # type(类的名称, (类继承对象),{属性}...

  • 10.元类

    元类的对象是类type是python的内建元类 自定义元类:

  • 2020-05-23

    1.最简单的一个元类实例: 元类要继承与type的. 2.跟踪过程: class Meta(type): def ...

  • type元类创建类对象

    元类type是用来创建类对象的 1、使用函数的方式通过type创建类对象 metaclass=upper_attr...

  • type与元类

    原文 1、什么是元类 通过上文的描述,我们知道了Python中的类也是对象。元类就是用来创建这些类(对象)的,元类...

  • Python元类MetaClass

    上文Python中object和type的关系中我们提到元类的概念。type就是最大的一个元类。在这里,我们详细介...

  • Python 元类

    什么是元类?元类就是创建类的类,type是最原始的一个元类。(实例是实例化的类,而类是元类的实例)python中一...

  • python——类装饰器,垃圾回收

    类装饰器 元类 类也是对象 可以动态的创建类type可以用来动态创建类,也可以测试数据类型 type创建类时,创建...

网友评论

      本文标题:关于type()元类的一些笔记

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