-1

我有以下问题。我想要一个对象类,它将预定义对象作为超类作为关键字参数。

但我得到了错误:

ImportError: cannot import name Object

代码:

import Object

class Object:

    defaultobject = Object('defaultobject', None)

    def __init__(self, name, superclass = defaultobject):
        self.__name = name
        self.__superclass = superclass
4

2 回答 2

3

您无法导入您所在的模块。您必须将Object()实例化移动到 类定义之后:

class Object:
    defaultobject = None

    def __init__(self, name, superclass=None):
        self.__name = name

        if superclass is None:
            superclass = self.defaultobject
            if superclass is None
                # No default set yet, use `self` instead (it'll *be* the default)
                superclass = self

        self.__superclass = superclass

Object.defaultobject = Object('defaultobject', None)

您始终可以向类定义添加更多属性,但要创建类的实例,您首先需要定义它。

舞蹈是必要的superclass is None,因为否则你在这里有一个catch-22;Object如果不先设置,您将无法创建实例Object.defaultobject。您不能这样做,因为您尚未创建默认值。

于 2013-03-28T20:34:47.450 回答
0

可以通过从父类中删除导入库来解决此问题,该导入库也由其某些子类导入。如果您的子类也使用导入对象,那么从父类中删除该对象将解决问题。

于 2014-01-17T09:33:05.393 回答