Python 中的元类

关于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()

 

你可能感兴趣的:(Python,python,元类,metaclass)