0

別のファイルからメソッドをインポートすることについて少し混乱しています。

からインポートする Python スクリプトを作成していpython-automataます。ファイルをダウンロードし、../Python/ディレクトリにDFA.py保存しmyfile.pyました。

myfile.py私はこれを上に書いています:

import DFA

私はpython チュートリアルに書かれていることに従っているので、 でmyfile.py定義されている任意のメソッドを使用できると仮定しDFA.pyます。そのファイルには__init__、5 つの引数を取り、DFA. 次に、これを次のように記述しmyfile.pyます。

DFA.__init__(states, alphabet, delta(states, alphabet), start, accepts)       

states、alphabet、delta、start、accepts はすべて、myfile.py で初期化した基本的なリスト/関数です。

しかし、myfile.py を実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "myfile.py", line 21, in <module>
    DFA.__init__(states, alphabet, delta(states, alphabet), start, accepts)
TypeError: module.__init__() takes at most 2 arguments (5 given)

DFA.py5つの引数を取ると定義されているのに、なぜ2つの引数を取ると言うのかわかりません。ではDFA.py、次のように表示されます。

class DFA:
    def __init__(self, states, alphabet, delta, start, accepts):
    ...

以前に遭遇した同様のエラーのように思えます ( Python import issueおよびPython classes and __init__ method を参照) が、ここで継承を処理する必要はないと思います。

4

3 に答える 3

5
from DFA import DFA

a = DFA(states, alphabet, delta(states, alphabet), start, accepts)

編集: 名前が付けられたメソッド__xx__は、直接呼び出されることを意図していません。

読書: http://docs.python.org/tutorial/classes.html

于 2012-10-08T16:45:52.597 に答える
4

モジュールとしてインポートしていますが、代わりにその中にクラスDFAをインポートしたいと考えています。試す:

from DFA import DFA

次に、クラス__init__でコンストラクターを呼び出すことにより、暗黙的に呼び出すことができます。DFA

DFA(states, alphabet, delta(states, alphabet), start, accepts)     
# ^ this calls __init__ on DFA
于 2012-10-08T16:45:55.047 に答える
0

を入れるとDFA.__init__()、モジュール全体のメソッドを呼び出してい__init__ます(それが何として定義されているかさえわかりません)。内のクラスのメソッドDFA.DFA.__init__()を参照する を使用するか、以下を使用する必要があります。__init__DFADFA.py

from DFA import *
DFA.__init__()
于 2012-10-08T16:45:57.117 に答える