我從Python 2.6.1中遇到了一些我沒想到的行爲。下面是一些瑣碎的代碼來重現問題:有人可以解釋這種意想不到的Python導入行爲嗎?
---- ControlPointValue.py ------
class ControlPointValue:
def __init__(self):
pass
---- ControlPointValueSet.py ----
import ControlPointValue
---- main.py --------------------
from ControlPointValue import *
from ControlPointValueSet import *
val = ControlPointValue()
....這裏是當我運行main.py(下OS/X雪豹,如果它事項)我得到的錯誤:
jeremy-friesners-mac-pro-3:~ jaf$ python main.py
Traceback (most recent call last):
File "main.py", line 4, in <module>
val = ControlPointValue()
TypeError: 'module' object is not callable
有人可以解釋這裏發生了什麼嗎? Python是否因爲類名與文件名相同而變得困惑?如果是這樣,解決這個問題的最好方法是什麼? (我更願意有我在他們中定義的類命名的Python文件)
感謝, 傑里米
這對我來說是意外的...... :)感謝您的解釋,這是有道理的。 – 2009-10-27 00:38:53
我的意思是,這不是一個錯誤。這是一個功能。 – 2009-10-27 00:40:07
是的。然而,「導入*」有時是合理的:「從數學導入*」這樣做是有道理的,例如,當你有很多公式時。 – EOL 2009-10-27 09:56:55