我有两个不同的文件,包含两个不同的类(我们称之为Foo
和Bar
)。
在类Foo.py
的文件(Foo
)中,我有:
class Foo:
def __init__(self):
...
在包含课程Bar.py
的文件(Bar
)中,我有:
from Foo import Foo
class Bar(Foo.Foo):
def __init__(self):
...
当我运行我的代码时,我得到了这个TypeError
:
Traceback (most recent call last):
File "Bar.py", line 2, in <module>
class Bar(Foo.Foo):
TypeError: Error when calling the metaclass bases
__init__() takes exactly 1 argument (4 given)
为什么它告诉我当代码中唯一的参数是__init__
时,我有4个参数传递self
?
答案 0 :(得分:2)
在我看来,您的问题是您直接导入该类,但之后尝试通过模块名称访问它。
如果您在模块源文件Foo
中有一个类foo.py
,那么您可以像这样使用它:
import foo
new_instance = foo.Foo()
你也可以这样做:
from foo import Foo
new_instance = Foo()
但你正试图这样做:
from Foo import Foo
new_instance = Foo.Foo()
在表达式Foo.Foo()
中,第一个Foo
是您的班级。然后在.
Python解析出Foo
并查找名为Foo
的类成员。
注意:我建议您遵守PEP 8指南,并且您的模块应使用小写名称。因此foo.py
而不是Foo.py
。