Digression开始
我刚学会了Python中的元类.我不认为python的创建者希望每个人都使用它们.我的意思是名字,在大多数情况下可能不是一个类的元类足以让大多数人远离这个概念!
题外话题结束
关于我的问题.我编写了这个简单的元类来为模块中创建的所有类添加默认的文档字符串.但它不起作用:
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__
Run Code Online (Sandbox Code Playgroud)
输出:
None
None
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我让你的例子起作用了:
def metest(name, bases, dict):
print name, bases, dict
dict['__doc__'] = """New Doc"""
cls = type(name+"_meta", bases, dict)
return cls
class Test(object):
"Old doc"
__metaclass__ = metest
print Test
print Test.__doc__
t = Test()
print t.__doc__
Run Code Online (Sandbox Code Playgroud)
cls由我们创造。