擅长:python、mysql、java
<p>这是基于Jerub在本主题中的回答:
<a href="https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python">What is a metaclass in Python?</a></p>
<p>你可以用元类实现你想要的。在</p>
<p>首先需要创建一个元类:</p>
<pre><code>def test_metaclass(name, bases, dict):
print 'The Class Name is', name
print 'The Class Bases are', bases
print 'The dict has', len(dict), 'elems, the keys are', dict.keys()
return dict
</code></pre>
<p>当然指纹不是必须的。在</p>
<p>那么让我介绍一下你的新邓德克希德:</p>
^{pr2}$
<p>现在您可以通过<code>repr(DunderDictHider)</code>访问所有已初始化的元素</p>
<p>输出(使用<code>print repr(DunderDictHider)</code>行):</p>
<pre><code>The Class Name is DunderDictHider
The Class Bases are (<type 'object'>,)
The dict has 3 elems, the keys are ['__dict__', '__module__', '__metaclass__']
{'__dict__': {'fake': 'dict'}, '__module__': '__main__', '__metaclass__': <function test_metaclass at 0x1001df758>}
</code></pre>
<p>每次你都可以试试</p>
<pre><code>if '__dict__' in repr(DunderDictHider)
</code></pre>
<p>知道这个类是否试图隐藏它的<code>__dict__</code>。记住,repr输出是一个字符串。它可以做得更好,但这就是想法本身。在</p>