2010-08-29 20 views
19

अगर मैं परिभाषित:पायथन में एक स्थिर विधि से (उप) कक्षा का नाम कैसे प्राप्त करें?

class Bar(object): 

    @staticmethod 
    def bar(): 
     # code 
     pass 

class Foo(Bar): 
    # code 
    pass 

एक समारोह Foo.bar फोन के लिए क्या यह संभव है() वर्ग के नाम फू निर्धारित करने के लिए?

उत्तर

27

statmmethod को classmethod के साथ बदलें। इसे कक्षा में पारित किया जाएगा जब इसे कहा जाता है, तो आप उस से कक्षा का नाम प्राप्त कर सकते हैं।

class Bar(object): 

    @classmethod 
    def bar(cls): 
     # code 
     print cls.__name__ 

class Foo(Bar): 
    # code 
    pass 

>>> Bar.bar() 
Bar 

>>> Foo.bar() 
Foo 
+1

धन्यवाद बहुत डेव! –

+2

यह सवाल का जवाब नहीं देता है। प्रश्न यह था कि इसे एक स्थिर विधि के साथ कैसे किया जाए। – sebix

2

आप कक्षा में जानकारी प्राप्त करने की जरूरत है, उचित तरीके से @classmethod उपयोग करने के लिए है।

class Bar(object): 
    @classmethod 
    def bar(cls): 
     # code 
     print(cls.__name__) 

class Foo(Bar): 
    # code 
    pass 

अब आप अपने bar विधि है जो फोन करने वाले की वास्तविक वर्ग है cls के रूप में वर्ग के लिए एक संदर्भ है। और जैसा कि कोड में दिखाया गया है, cls.__name__ उस श्रेणी के नाम है जो आप देख रहे हैं।

>>> Foo.bar() 
Foo 
>>> Bar.bar() 
Bar 
+0

यह पहले से ही उत्तर दिया गया था, लेकिन वैसे भी धन्यवाद! –

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

  • कोई संबंधित समस्या नहीं^_^