Estoy escribiendo scripts de Python para Blender para un proyecto, pero soy bastante nuevo en el lenguaje. Algo de lo que estoy confundido es el uso de variables estáticas. Aquí está la pieza de código Actualmente estoy trabajando en:Herencia variable estática en 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"
La idea es que la segunda clase debe heredar el activa variable y el invocar el método de la primera, por lo que llamar OBJECT_OT_openConstraintPanel.invoke () cambia OBJECT_OT_openConstraintPanel.active. Sin embargo, el uso de auto como lo hice anteriormente no funcionará, y tampoco lo hace el uso del panel Talk. ¿Alguna idea de cómo hago esto?
bien, parece que puedo utilizar self.__class__.active o tipo (auto) .active dejar que el método heredan correctamente. ¡Gracias! – gibberish
¿Por qué está usando variables estáticas en primer lugar? Eso no parece sensato. ¿Es este atributo 'activo' algún tipo de instancia global, compartida entre todas las instancias' PanelToggle'? Si es así, ¿por qué no es realmente global? ¿O por qué no está en algún objeto compartido más global? –
Quiero que cada subclase de PanelToggle tenga su propia variable "activa" a la que se puede acceder sin crear una instancia. Si entiendo correctamente el uso de la palabra clave "global", tendría que insertar una línea 'global active' primero en 'invoke (..)' antes de usar active como una variable local. Hacer esto da un error al decir que el nombre global 'activo' no está definido. No estoy seguro de entender lo que está mal con mi enfoque, sin embargo. – gibberish