<p>根据本页<a href="http://docs.python.org/2/library/functions.html#dir" rel="noreferrer">http://docs.python.org/2/library/functions.html#dir</a></p>
<blockquote>
<p>Because dir() is supplied primarily as a convenience for use at an
interactive prompt, it tries to supply an interesting set of names
more than it tries to supply a rigorously or consistently defined set
of names, and its detailed behavior may change across releases. For
example, metaclass attributes are not in the result list when the
argument is a class.</p>
</blockquote>
<p>因此,我们不应该依赖<code>dir</code>来了解一个对象的所有信息。如果该类实现<code>__dir__</code>方法,我们将只获得从该方法返回的任何内容。他们可能实现了<code>__dir__</code>,并从<code>dir</code>调用中抽象出{<cd4>}。在</p>
<p>示例:<strong></p>
<pre><code>class TestClass:
def __init__(self):
self.myValue = 0
def myMethod(self):
pass
def __dir__(self):
return []
class TestClass1:
def __init__(self):
self.myValue = 0
def myMethod(self):
pass
print dir(TestClass())
print dir(TestClass1())
print dir(TestClass())
print dir(TestClass1())
</code></pre>
<p><strong>输出</strong></p>
^{pr2}$