1.通过元类限制类的名字首字母大写
if not class_name.istitle():
raise TypeError('类的名字首字母需要大写')
2. 控制类中必须要有注释
if not class_dict.get('__doc__'):
raise TypeError('类内部必须要有注释')
3.调用对象会触发__call__魔法方法
class Goo:
def __call__(self, *args, **kwargs):
print('调用了对象')
pass
g=Goo()
#调用Foo对象会触发__call__魔法方法
g()
输出的打印结果是:调用了对象
4.元类触发的__call__可以控制类的调用,调用__call__会触发下面两点:
__call__做的事情
def __call__(self,*args,**kwargs):
1.调用__new__(),会创建一个空对象
obj=object.__new__(self)
2.会执行__init__(obj,*args,**kwargs)
obj.__init__(*args,**kwargs)
return obj