Digression Start
我刚学会了Python中的元类.我不认为python的创建者希望每个人都使用它们.我的意思是名字,在大多数情况下可能不是一个类的元类足以让大多数人远离这个概念!
Digression end
关于我的问题.我编写了这个简单的元类来为模块中创建的所有类添加默认的文档字符串.但它不起作用:
def metest(cls,name,bases,dict):
cls.setattr(cls,'__doc__',"""Default Doc""")
return type(cls,(),{})
__Metaclass__=metest
class test(object):
pass
print test.__doc__
t=test()
print t.__doc__
输出:
None None
我究竟做错了什么?
解决方法
我让你的例子工作:
def metest(name,dict):
print name,dict
dict['__doc__'] = """New Doc"""
cls = type(name+"_Meta",dict)
return cls
class Test(object):
"Old doc"
__Metaclass__ = metest
print Test
print Test.__doc__
t = test()
print t.__doc__
>使用“元类”.>更正“类创建功能”的签名. cls将由我们创建.>为了区分,请使用“旧”和“新”文档字符串.