J'écris des scripts Python pour Blender pour un projet, mais je suis assez nouveau dans le langage. Quelque chose que je suis confus à propos de l'utilisation de variables statiques. Voici le morceau de code, je travaille actuellement sur:Héritage de variable statique 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"
L'idée est que la deuxième classe doit hériter de la variable actif et la invoquer méthode de la première, de sorte que l'appel OBJECT_OT_openConstraintPanel.invoke () change OBJECT_OT_openConstraintPanel.active. L'utilisation de self comme je l'ai fait ci-dessus ne fonctionnera cependant pas, et n'utilise pas non plus panelToggle à la place. Une idée de comment je vais à ce sujet?
D'accord, il semble que je peux utiliser self.__class__.active ou le type (auto) .active laisser la méthode héritera correctement. Merci! – gibberish
Pourquoi utilisez-vous des variables statiques en premier lieu? Cela ne semble pas raisonnable. Cet attribut 'active' est-il une sorte de global, partagé entre toutes les instances de' PanelToggle'? Si oui, pourquoi n'est-ce pas globalement? Ou pourquoi n'est-ce pas dans un objet partagé plus global? –
Je veux que chaque sous-classe panelToggle ait sa propre variable "active" accessible sans créer d'instance. Si je comprends bien l'utilisation du mot-clé "global", je devrais d'abord insérer une ligne 'global active' dans 'invoke (..)' avant d'utiliser active comme une variable locale. Cela provoque une erreur indiquant que le nom global 'active' n'est pas défini. Je ne suis pas sûr de comprendre ce qui ne va pas avec mon approche, cependant. – gibberish