擅长:python、mysql、java
<p>Ryan的答案是完整的,但我认为值得注意的是,除了使用内置的<code>type</code>和<code>exec</code>/<code>eval</code>或其他方法之外,至少还有一种邪恶的方法可以做到这一点:</p>
<pre><code>class X:
attr1 = 'some attribute'
def __init__(self):
print 'within constructor'
def another_method(self):
print 'hey, im another method'
# black magics
X.__name__ = 'Y'
locals()['Y'] = X
del X
# using our class
y = locals()['Y']()
print y.attr1
y.another_method()
</code></pre>
<p>注意,我只在创建类<code>Y</code>和初始化{<cd4>}的实例时使用字符串,所以这个方法是完全动态的。在</p>