我正在爲一個項目編寫Blender的Python腳本,但我對這個語言很陌生。我感到困惑的是靜態變量的使用。下面是一段代碼,我目前的工作: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"
的想法是,第二類應該繼承活躍變量和從第一調用方法,使呼叫OBJECT_OT_openConstraintPanel.invoke( )改變了OBJECT_OT_openConstraintPanel.active。使用self正如我以上所做的那樣不起作用,並且也不使用panelToggle來代替。任何想法我如何去做這件事?
好吧,看來我可以用self.__class__.active或類型(個體經營)。主動讓方法繼承正常。謝謝! – gibberish 2010-08-13 09:52:46
爲什麼你首先使用靜態變量?這似乎不明智。這是'active'屬性的某種全局性,在所有'PanelToggle'實例中共享?如果是這樣,爲什麼它不是全球性的?或者爲什麼不在一些更全局的共享對象? – 2010-08-13 10:09:50
我希望每個panelToggle子類都有自己的「活動」變量,可以在不創建實例的情況下訪問它。如果我正確理解使用「全局」關鍵字,那麼在使用像局部變量一樣的活動之前,我必須首先在「調用(..)」中插入一個「全局活動」行。 這樣做會產生一個錯誤,說全局名稱'active'沒有被定義。 但是,我不確定我是否理解我的方法有什麼問題。 – gibberish 2010-08-13 11:17:12