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