Python,导入文件中的init方法

Tak*_*keS 0 python import module

我对从另一个文件导入方法感到有些困惑。

我正在编写一个从导入的Python脚本python-automata。我已经下载的文件,在我的../Python/目录,我有DFA.pymyfile.py存储。

myfile.py我上面写的是:

import DFA
Run Code Online (Sandbox Code Playgroud)

当我遵循python教程中编写的内容时,我假设myfile.py可以使用中定义的任何方法DFA.py。该文件有一个名为的方法__init__,该方法接受5个参数并初始化一个DFA。然后我写在myfile.py

DFA.__init__(states, alphabet, delta(states, alphabet), start, accepts)       
Run Code Online (Sandbox Code Playgroud)

状态,字母,增量,开始和接受都是我在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)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么将它DFA.py定义为接受5个参数时为什么说需要2 个参数。在中DFA.py,我看到:

class DFA:
    def __init__(self, states, alphabet, delta, start, accepts):
    ...
Run Code Online (Sandbox Code Playgroud)

似乎是我之前遇到的类似错误(请参阅Python导入问题Python类以及__init__方法),但我认为这里不需要处理继承。

小智 5

from DFA import DFA

a = DFA(states, alphabet, delta(states, alphabet), start, accepts)
Run Code Online (Sandbox Code Playgroud)

编辑:命名__xx__的方法并不意味着直接调用。

一些阅读:http : //docs.python.org/tutorial/classes.html