擅长:python、mysql、java
<p>答案是<strong>NO</strong>,因为作为<a href="https://bitbucket.org/amauryfa/pywin32-pypy/src/2a1da51e81526e3c1467682e1b78a76a13763a82/com/win32com/client/__init__.py" rel="nofollow">in this case</a>,对象的<code>__getattr__</code>方法可以被重写。考虑以下示例:</p>
<pre><code>>>> class Const(object):
... def __init__(self, val):
... self.value = val
... def __getattr__(self, a):
... return self.value
... def __setattr__(self, a, v)
... self.__dict__[a] = v
...
>>> c = Const(1)
>>> dir(c)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'value']
>>> c.__dict__
{'value': 1}
>>> c.some_strange_attribute_name
1
>>> c.some_strange_attribute_name = 2
>>> c.some_strange_attribute_name
2
</code></pre>