2017-03-18 123 views
0

我以前看過這個錯誤,它是由於某些非常不相關的東西,但我似乎無法通過這個現在嘗試,因爲我可能。整個錯誤似乎與我矛盾,但Python可能在某種程度上是正確的。__init __()需要1個位置參數,但有2個被給出

所以,在富/ foo.py我有一個類和它的構造函數定義如下:

class Foo: 
    def __init__(self, bars): 
     self.bars = bars 

在baz.py我有以下幾點:

from foo import foo 
test_bars = [ a list of things ] 
f = foo.Foo(test_bars) 

這使我

__init__() takes 1 positional argument but 2 were given 

我試圖打開構造成kwargs過,如下

class Foo: 
    def __init__(self, bars=None): 
     self.bars = bars 

,然後調用

from foo import foo 
test_bars = [ a list of things ] 
f = foo.Foo(bars=test_bars) 

,這給有關不明kwarg錯誤。

foo/foo.py中包含的其他類似乎正常工作。

這是什麼我沒有看到?

+3

它看起來並不像要導入你認爲你是這個文件。從foo import foo嘗試'';打印foo .__ file__''來查看它來自哪裏。 – jasonharper

+0

實際上,它看起來像是該文件是正確的: \ foo \ foo.py 而且,如果我觸摸構造函數參數,它會給出不同的錯誤消息。它一定是別的東西。 – xtrom0rt

+0

也許你在文件中有兩個''Foo類'?這不是一個錯誤,並且您對第一個所做的任何更改都將不起作用。 – jasonharper

回答

0

杜赫,我知道它必須是一些愚蠢的東西。我有一個較老的類的實現,具有相同的名稱下面定義的一切。當我向下滾動時,我只看到它。

0

1)導入錯誤的類foo它的Foo,即從foo導入Foo。

2)foo.Foo應該只有富

from foo import Foo 
test_bars = [ 1, 2, 3 ] 
f = Foo(test_bars) 
+0

實際上,foo.Foo更加清晰,也被[Python風格指南]推薦(http://docs.python-guide.org/en/latest/writing/structure/) – xtrom0rt

+0

他只導入了Foo類,而不是整個模塊foo。所以,如果你嘗試運行foo.Foo(),它會產生一個錯誤:Traceback(最近調用最後一個): 文件「baz.py」,第3行,在 f = foo.Foo(test_bars) NameError :名稱'foo'未定義 –

相關問題