擅长:python、mysql、java
<p>您需要在类(即:<code>self.__class__</code>)上设置属性,而不是在对象(即:<code>self</code>)上设置属性。例如:</p>
<pre><code>class Basket(object):
def __init__(self):
# add all the properties
setattr(self.__class__, 'Apple', property(lambda s : 'Apple') )
setattr(self.__class__, 'Pear', property(lambda s : 'Pear') )
# normal property
Air = property(lambda s : "Air")
if __name__ == "__main__":
b = Basket()
print b.Air # outputs: "Air"
print b.Apple # outputs: "Apple"
print b.Pear # outputs: "Pear"
</code></pre>
<p>值得一提的是,在循环中创建lamdas时使用<code>p</code>并没有给出您预期的行为。由于<code>p</code>的值是在循环过程中更改的,所以在循环中设置的两个属性都返回相同的值:<code>p</code>的最后一个值。在</p>