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
将 _var 移入Outer
没有帮助 - 将其移入模块范围会起作用,但会破坏拥有类的目的。那么该怎么做呢?
编辑:来自 Java,所以类的范围规则对我来说是一个令人头疼的问题 - 简报将不胜感激。顺便说一句,这有效:
class Derived(InnerBase): pass
Derived._var = InnerBase._var | {'baz'}
但这不是优雅的顶峰。
相关:嵌套类的范围?- 但是这里我们特别想访问我们的父类(而不是 Outer 类型)
EDIT2:我实际上追求的是类似_var = __class__._var
的语法(或hack),或者解释为什么它不存在