擅长:python、mysql、java
<p>我终于想出办法了。类方法是在创建新的类对象之后添加的(这并不是我想要的),而是在它实际实例化之前添加的。由于<code>setattr</code>,方法的名称可以动态更改。你知道吗</p>
<pre><code>class ClassModel(object):
number = None
class FunctionModel(object):
number = None
def __call__(myself, clsself):
return myself.number + clsself.number
</code></pre>
<p>定义类并添加属性:</p>
<pre><code>from types import MethodType
func1 = type('func1', (FunctionModel,), {'number': 3})
func2 = type('func2', (FunctionModel,), {'number': 5})
func1_inst = func1()
func2_inst = func2()
Cls = type('Cls', (ClassModel,), {'number': 10})
setattr(Cls, 'func1', MethodType(func1_inst, Cls))
setattr(Cls, 'func2', MethodType(func2_inst, Cls))
</code></pre>
<p>并举例说明:</p>
<pre><code>cls_inst = Cls()
cls_inst.func1()
# 13
cls_inst.func2()
# 15
</code></pre>