2016-01-23 37 views
6

के व्यवहार को अधिभारित कर सकते हैं, मुझे पता है कि हम कक्षा के उदाहरणों का व्यवहार अधिभारित कर सकते हैं, उदा। -क्या हम क्लास ऑब्जेक्ट

class Sample(object): pass 
s = Sample() 
print s 
<__main__.Sample object at 0x026277D0> 
print Sample 
<class '__main__.Sample'> 

हम print s का परिणाम बदल सकते हैं:

class Sample(object): 
    def __str__(self): 
    return "Instance of Sample" 
s = Sample() 
print s 
Instance of Sample 

हम print Sample का परिणाम बदल सकते हैं?

उत्तर

5

आप उपयोग कर सकते हैं एक metaclass:

class SampleMeta(type): 
    def __str__(cls): 
     return ' I am a Sample class.' 

अजगर 3:

class Sample(metaclass=SampleMeta): 
    pass 

अजगर 2:

class Sample(object): 
    __metaclass__ = SampleMeta 

आउटपुट:

I am a Sample class. 

एक मेटाक्लास कक्षा का वर्ग है। एक वर्ग के साथ इसका संबंध किसी वर्ग के उदाहरण के समान है। वही class कथन का उपयोग किया जाता है। के बजाय type को इनहेरिटिंग फॉर्म इसे मेटाक्लास बनाता है। सम्मेलन द्वारा self को cls द्वारा प्रतिस्थापित किया गया है।

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