2012-06-27 21 views
12

मैं एक स्थिर विधि से एक स्थिर चर उपयोग करना चाहते से:पहुँच स्थिर चर स्थिर विधि

#!/usr/bin/env python 
class Messenger: 
    name = "world" 
    @staticmethod 
    def get_msg(grrrr): 
     return "hello " + grrrr.name 

print Messenger.get_msg(Messenger) 

यह कैसे करने के लिए एक विधि के लिए grrrr गुजर बिना? यह सच OOP है ..

कुछ भी name या self.name की तरह काम नहीं कर लगता है:?

NameError: global name 'name' is not defined 

और

NameError: global name 'self' is not defined 

उत्तर

14

उपयोग @classmethod बजाय @staticmethod। प्रश्न लिखने के बाद ही इसे मिला।

कई भाषाओं में (सी ++, जावा इत्यादि) "स्थैतिक" और "वर्ग" विधियां समानार्थी हैं। Not in Python.

8
def get_msg(): 
    return "hello " + Messenger.name 

आप self.name उपयोग नहीं कर सकते क्योंकि स्वयं परिभाषित नहीं है। स्वयं गैर स्थैतिक या गैर-वर्ग विधि विधियों के पहले पैरामीटर के लिए एक नामकरण सम्मेलन है। यह उस वस्तु को इंगित करता है जिस पर आपने विधि कहा था। चूंकि आप विधि स्थिर हैं, इसलिए आपको इसे कॉल करने के लिए किसी ऑब्जेक्ट की आवश्यकता नहीं है।

संबंधित मुद्दे