2013-11-14 68 views
0

我试图初始化从孩子模块具有以下结构的父模块:蟒蛇错误在不同的文件

$ cat caller.py 
#!/usr/bin/env 
import child 

$ cat parent.py 
class parent(object): 
    def __init__(self): 
     print "initialised parent" 

$ cat child.py 
import parent 
class child(parent): 
    def __init__(self): 
     print "initialised child" 
然而

我得到以下错误:

Traceback (most recent call last): 
    File "caller.py", line 3, in <module> 
    import child 
    File "child.py", line 2, in <module> 
    class child(parent): 
TypeError: Error when calling the metaclass bases 
    module.__init__() takes at most 2 arguments (3 given) 

我做错了什么?

+0

哇,有关错误消息的元类该位是一个好办法吓跑新手,是不是......幸运的是,他们用Python 3修正了这个问题。对新手来说,他们做错了什么可能并不明显,但至少它不像可怕...... – abarnert

回答

8

您正在尝试使用parent模块对象作为类。您需要使用类对象从模块:

import parent 

class child(parent.parent): 
    def __init__(self): 
     print "initialised child" 

或从模块导入类到全局命名空间:

from parent import parent 

class child(parent): 
    def __init__(self): 
     print "initialised child" 
+0

ooooh当然是哈哈谢谢。将在10分钟内接受当stackoverflow让我:) – mulllhausen

+2

作为一个方面说明 - 这是正常的,有类(但不是模块)开始在大写。所以孩子和父母。 class Child(parent.Parent) –

+0

@AidanKane:这个约定的一部分原因(载于PEP 8)是让这种错误变得更难。 – abarnert