Tak*_*keS 0 python import module
我对从另一个文件导入方法感到有些困惑。
我正在编写一个从导入的Python脚本python-automata。我已经下载的文件,在我的../Python/目录,我有DFA.py和myfile.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