擅长:python、mysql、java
<p>我最近也遇到过同样的问题,我想用最初的例子写下我发现对我有用的东西。与前面的答案不同的是,我使用setattr来创建函数名(作为类的一部分)。</p>
<pre><code>class xyz(object):
def __init__(self):
# I wasn't clear how you were using effort...like this?
self.effort = '0d'
def add_phases(self, phase_dict): # Take a dictionary of phases and values
for phase, value in phase_dict.items():
self.make_phase(phase, value)
def make_phase(self, phase, value):
def somephase(self): # Create a closure like @Ignacio
self.effort = str(value) + 'd'
setattr(self.__class__, "Phase" + str(phase), somephase)
tracker = xyz()
phases = {1:2, 2:1, 3:6, 4:2}
tracker.add_phases(phases)
tracker.Phase3()
assert tracker.effort == '6d'
</code></pre>