Access Basisklassenattribut in abgeleiteter Klasse - in "Klassenbereich"

class Outer(object):
    class InnerBase(object): _var = {'foo', 'bar'}
    class Derived(InnerBase):
        _var = _var | {'baz'} # NameError: name '_var' is not defined
        _var = InnerBase._var | {'baz'} #  name 'InnerBase' is not defined
        _var = Outer.InnerBase._var | {'baz'} #  free variable 'Outer'
        # referenced before assignment in enclosing scope

Verschieben von _var inOuter hilft nicht - das Verschieben im Modulbereich würde funktionieren, aber den Zweck von Klassen zunichte machen. Wie geht man damit um?

EDIT: Ich komme aus Java, daher sind die Scoping-Regeln der Klassen für mich ein Kratzer - eine Einweisung wäre wünschenswert. Das funktioniert übrigens:

    class Derived(InnerBase): pass
    Derived._var = InnerBase._var | {'baz'}

aber es ist nicht der Höhepunkt der Eleganz.

Verbunden: Umfang der verschachtelten Klassen? - aber hier möchten wir speziell auf unsere Elternklasse zugreifen (und nicht auf den äußeren Typ)

EDIT2: Was ich eigentlich nachher bin ist ein_var = __class__._var -ähnliche Syntax (oder Hack) oder eine Erklärung zuWaru es ist nicht d

Antworten auf die Frage(6)

Ihre Antwort auf die Frage