mini-web框架-元类-总结(5.4.1)

Posted simon-idea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mini-web框架-元类-总结(5.4.1)相关的知识,希望对你有一定的参考价值。

@

1.说明

python中万物都是对象
使用python中自带的globals函数返回一个字典
通过这个可以调取当前py文件中的所有东西
当定义一个函数,类,全局变量的时候,其实就是创建了一个对象
然后在globals获取这个字典中添加的一个名字
让这个名字指向刚才创建的变量空间
那么元类是一种特殊的类,它的用处就是创建一个类
在python中使用元类的作用
可以元类看做为一种规范,就是定义的类使用了这个元类,就要按照这个规范改写

2.代码

使用type创建类
第一个参数为类名
第二个参数为继承的父类(元组)
第三个为类中的属性-变量和函数等(字典)

Test = type("Test",(),)

需求:
把类中的所有属性变为大写
元类继承type
在__new__方法中获取cls(类),类名,父类,属性
然后适当更改
再返回一个type生成的对象(类)


class UpperAttrMetaClass(type):
    def __new__(cls, class_name,class_parents,class_attr):
        #遍历属性的字典,吧不是__开头的属性改为大写
        new_attr = 
        for name,value in class_attr.items():
            if not name.startswith("__"):
                new_attr[name.upper()] = value

        #使用type创建一个类
        return type(class_name,class_parents,class_attr)

class Test(object,metaclass=UpperAttrMetaClass):
    bar = "bar"



test = Test()
print(hasattr(test,"BAR"))

# print(test.BAR)

关于作者

个人博客网站
个人GitHub地址
个人公众号:
技术图片

以上是关于mini-web框架-元类-总结(5.4.1)的主要内容,如果未能解决你的问题,请参考以下文章

mini-web

mini-Web框架:模板替换与路由列表功能开发 | 黑马程序员

mini-Web框架:装饰器方式的添加路由 | 黑马程序员

mini-web框架-WSGI-mini-web框架-web服务器集成动态请求的功能(5.1.2)

python 吐血总结面向对象元类

python 吐血总结面向对象元类