3

3 つのレベルすべてを維持しながら、このエラーを修正する簡単な方法はありますか?

オブジェクトから ClassA を派生させても役に立ちません。

前もって感謝します!

>>> class classA:
...     class classB(object):
...         def __init__(self):
...             self.b = 3
...         class classC(classA.classB):
...             def __init__(self):
...                 super(classC, self).__init__()
...                 self.c = 4
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in classA
  File "<stdin>", line 5, in classB
NameError: name 'classA' is not defined
4

2 に答える 2

8

いいえ。定義した時点ではclassCclassAはまだ存在しません。

本体が完全に実行された後にのみ作成されます。(本体の実行から作成された dict は、クラス作成呼び出しの 1 つのパラメーターですclass = type('classname', (superclass_1, superclass_2, superclass_3), said_dict})。)

最も簡単な方法は、それらを同じレベルで定義することです。

絶対に必要な場合は、後で変更できます。

class classA:
    pass
class classB(object):
    def __init__(self):
        self.b = 3
class classC(classB):
    def __init__(self):
        super(classC, self).__init__()
        self.c = 4
classA.classB = classB
classB.classC = classC
于 2013-01-09T15:09:38.737 に答える
-1

たぶん、このようなものがうまくいくでしょう:

class classA:
    pass

class classB(object):
    def __init__(self):
        self.b = 3
classA.classB = classB

class classC(classA.classB):
    def __init__(self):
        super(classC, self).__init__()
        self.c = 4

classA.classB.classC = classC
于 2013-01-09T15:13:32.647 に答える