欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 中的元类

程序员文章站 2022-06-16 13:42:21
...

关于python中的元类,我们可以说是百分之99都用不到,但是你如果想了解一些关于元类的编程,那么我们可以简单的探讨一下:

我想先推荐一篇文章 :了解 Python中的元类

如果看完以后还是感觉莫名其妙,运行这样一个demo 可能会对你有所帮助:

(元类编程在我看来,如果你想开发一些框架,可以尝试一下)

class UpperAttrMetaclass(type):
    _type = dict()

    def __new__(cls, cls_name, bases, attr_dict):
        news_cls = type.__new__(cls, cls_name, bases, attr_dict)
        print('cls_name', cls_name)
        print('bases', bases)
        print('news_cls:', news_cls)
        for name, val in attr_dict.items():
            print('_name:', name, "_val:", val)
        UpperAttrMetaclass._type[attr_dict['name']] = news_cls
        return news_cls


class Spider(object, metaclass=UpperAttrMetaclass):
    name = 'bar'

    def hello(self):
        print('hello, word')

    def find_one(self):
        print('find_one')


class Baijiaho(Spider):
    name = 'baijiahao'

    def get_list(self):
        print([1, 2, 3, 4, 5])


class toutiao(Spider):
    name = 'toutiao'

    def get_list(self):
        print([4, 5])


print(Spider._type)
b = Spider._type.get('baijiahao')()
b.get_list()