<p>考虑使用元类,
举个例子:</p>
<pre><code>class ClassModel(object):
attr = None
class FunctionModel(object):
attr = None
def __init__(self,aValue):
self.attr = aValue
def __call__(self, cls):
return self.attr + cls.attr
def getFMClasses(aDictOfMethods):
class MM(type):
def __new__(cls, name, bases, dct):
for aName in aDictOfMethods:
dct[aName] = classmethod(FunctionModel(aDictOfMethods[aName]))
return super(MM, cls).__new__(cls, name, bases, dct)
pass
pass
return MM
</code></pre>
<p>一旦所有这些都定义好了,获取新类就是一个小游戏。。。你知道吗</p>
<pre><code>class NewClass1(ClassModel):
__metaclass__ = getFMClasses({'method1':3,'method2':5})
attr = 2
class NewClass2(ClassModel):
__metaclass__ = getFMClasses({'method1':6,'DifferentMethod':2,'OneMore':0})
attr = 3
myObj = NewClass1()
print myObj.method1()
print myObj.method2()
myObj = NewClass2()
print myObj.method1()
print myObj.DifferentMethod()
print myObj.OneMore()
</code></pre>