में स्टेटिक वैरिएबल विरासत मैं प्रोजेक्ट के लिए ब्लेंडर के लिए पाइथन स्क्रिप्ट लिख रहा हूं, लेकिन मैं भाषा के लिए काफी नया हूं। कुछ मैं उलझन में हूं स्थिर स्थिरता का उपयोग है। यहाँ कोड का टुकड़ा मैं वर्तमान पर काम कर रहा हूँ है:पायथन
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 बदलता है। स्वयं का उपयोग करते हुए मैंने उपरोक्त काम नहीं किया है, और न ही पैनल टॉगल का उपयोग कर रहा है। इस बारे में कोई विचार है कि मैं इसके बारे में कैसे जाता हूं?
if panelToggle.active:
# do something
आप एक विधि से वर्ग चर उपयोग करना चाहते हैं, तो आप लिख सकते हैं::
def am_i_active(self):
""" This method will access the right *class* variable by
looking at its own class type first.
"""
if self.__class__.active:
print 'Yes, sir!'
else:
print 'Nope.'
एक काम कर उदाहरण
ठीक है, ऐसा लगता है मैं उपयोग कर सकते हैं self.__class__.active या प्रकार (स्वयं) विधि ठीक से विरासत में जाने के लिए .active। धन्यवाद! – gibberish
आप पहली जगह स्थिर चर का उपयोग क्यों कर रहे हैं? यह समझदार प्रतीत नहीं होता है। क्या यह 'सक्रिय' विशेषता किसी प्रकार का वैश्विक है, जो सभी 'PanelToggle' उदाहरणों के बीच साझा की जाती है? यदि हां, तो यह वास्तव में वैश्विक क्यों नहीं है? या कुछ और वैश्विक साझा वस्तु में क्यों नहीं है? –
मैं चाहता हूं कि प्रत्येक पैनल टॉगल सबक्लास के पास अपना "सक्रिय" चर हो जिसे किसी उदाहरण के बिना एक्सेस किया जा सके। यदि मैं "ग्लोबल" कीवर्ड के सही तरीके से उपयोग को समझता हूं, तो मुझे स्थानीय चर की तरह सक्रिय करने से पहले 'invoke (..)' में पहले 'ग्लोबल एक्टिव' लाइन डालना होगा। ऐसा करने से एक त्रुटि यह कहती है कि वैश्विक नाम 'सक्रिय' परिभाषित नहीं किया गया है। मुझे यकीन नहीं है कि मैं समझता हूं कि मेरे दृष्टिकोण में क्या गलत है। – gibberish