जब किसी ऑब्जेक्ट को अनुक्रमित किया जाता है, तो विशेष विधि __getitem__
ऑब्जेक्ट की कक्षा में पहली बार देखी जाती है। एक वर्ग स्वयं एक वस्तु है, और कक्षा का वर्ग आमतौर पर type
होता है। तो एक वर्ग के लिए __getitem__
ओवरराइड करने के लिए, आप अपनी metaclass को फिर से परिभाषित कर सकते हैं (यह type
का एक उपवर्ग बनाने के लिए):
class MetaA(type):
def __getitem__(cls,val):
return "It works"
class A(object):
__metaclass__=MetaA
pass
print(A[0])
# It works
python3 में metaclass इस तरह से निर्दिष्ट किया जाता है:
class A(object, metaclass=MetaA):
pass
अच्छा और मीठा :) – Woltan
py3 में यह –
@ups नहीं है: मेटाक्लास को पायथन 3 में एक अलग तरीके से निर्दिष्ट किया गया है। मैंने यह दिखाने के लिए कोड जोड़ा है कि ऊपर, कैसे। – unutbu