擅长:python、mysql、java
<p>在类定义期间实际执行所尝试的操作的唯一方法是使用<a href="https://stackoverflow.com/a/6581949/505154">metaclass</a>:</p>
<pre><code>def saveDirMeta(name, bases, dct):
dct['saveDirectory'] = os.path.join(saveDir, name)
return type(name, bases, dct)
class TestClass(object):
__metaclass__ = saveDirMeta # this adds the 'saveDirectory' attribute
def __init__(self):
pass # do something
</code></pre>
<p>或者在Python 3.x上:</p>
<pre><code>class TestClass(metaclass=saveDirMeta):
def __init__(self):
pass # do something
</code></pre>
<p>这显然比仅使用以下方法更不清楚:</p>
<pre><code>class TestClass():
saveDirectory = os.path.join(saveDir, 'TestClass')
def __init__(self):
pass # do something
</code></pre>