Python中的静态变量继承

gib*_*ish 12 python syntax inheritance static blender

我正在为一个项目为Blender编写Python脚本,但我对这门语言很陌生.我很困惑的是静态变量的使用.这是我目前正在处理的一段代码:

class panelToggle(bpy.types.Operator):
    active = False

    def invoke(self, context, event):
        self.active = not self.active
        return{'FINISHED'}

class OBJECT_OT_openConstraintPanel(panelToggle):
    bl_label = "openConstraintPanel"
    bl_idname = "openConstraintPanel"
Run Code Online (Sandbox Code Playgroud)

我们的想法是第二个类应该从第一个类继承活动变量和invoke方法,以便调用OBJECT_OT_openConstraintPanel.invoke()更改OBJECT_OT_openConstraintPanel.active.但是,如上所述使用self不会起作用,也不会使用panelToggle.知道我怎么回事吗?

Odo*_*ois 21

使用type(self)访问类属性

>>> class A(object):
 var  = 2
 def write(self):
  print type(self).var
>>> class B(A):
 pass
>>> B().write()
2
>>> B.var = 3
>>> B().write()
3
>>> A().write()
2
Run Code Online (Sandbox Code Playgroud)

  • `type(self)`与使用`self .__ class__`有什么不同? (4认同)
  • 现在不是.但是某些功能可以在以后实施.你也可以做一些猴子补丁来打字功能. (3认同)