我正在使用这个简单的例子来理解 Python 的getattr函数:
In [25]: class Foo:
....: def __getattr__(self, name):
....: print name
....:
....:
In [26]: f = Foo()
In [27]: f.bar
bar
bar
为什么要bar
打印两次?使用 Python 2.6.5。
我正在使用这个简单的例子来理解 Python 的getattr函数:
In [25]: class Foo:
....: def __getattr__(self, name):
....: print name
....:
....:
In [26]: f = Foo()
In [27]: f.bar
bar
bar
为什么要bar
打印两次?使用 Python 2.6.5。
我认为这是由于 IPython。
要“修复”它,您必须禁用自动调用:%autocall 0
这是 %autocall 不可避免的副作用:因为它必须在命令行中分析对象以查看它是否可调用,所以 python 会触发 getattr 调用。
来源: http: //mail.scipy.org/pipermail/ipython-user/2008-June/005562.html
你也在使用 IPython。股票 CPython REPL 没有表现出这种行为。