使用
getattr()而不是直接进入
__dict__结构要好得多。
不是因为它更快或更慢,而是因为官方API在 所有 情况下 都能 正常工作,包括适用于 不
具有此类的类
__dict__(
__slots__例如,使用时),对象实现the
__getattr__或
__getattribute__hooks或相关属性为描述符时(例如
property)或类属性。
如果您想知道某条python语句或技术是否比另一条更快,请使用该
timeit模块来
衡量 差异:
>>> import timeit>>> class Foo(object):... pass... >>> foo = Foo()>>> foo.bar = 'spam'>>> timeit.timeit("getattr(foo, 'bar')", 'from __main__ import foo')0.2125859260559082>>> timeit.timeit("foo.__dict__['bar']", 'from __main__ import foo')0.1328279972076416您可以看到直接访问
__dict__速度更快,但是需要
getattr()做更多的工作。



