उत्कृष्ट SO post पढ़ने के बाद, मैं एक मॉड्यूल स्तर metaclass क्राफ्टिंग की कोशिश की:अजगर metaclass और वस्तु आधार वर्ग
def metaclass(future_class_name, future_class_parents, future_class_attrs):
print "module.__metaclass__"
future_class_attrs["bar"]="bar"
return type(future_class_name, future_class_parents, future_class_attrs)
__metaclass__=metaclass
class Foo(object):
def __init__(self):
print 'Foo.__init__'
f=Foo()
यह काम नहीं करता (यानी "। मॉड्यूल metaclass" मुद्रित नहीं प्राप्त करता है) जब तक मैं फू के object
बेस क्लास को हटा नहीं देता। कैसे?
नोट: मैं पायथन 2.6.1 का उपयोग कर रहा हूं।
विनिर्देशन ऐसी कोई बात नहीं कहता है। यह क्या कहता है कि यदि बेसक्लस है, तो बेसक्लास का मेटाक्लास इस्तेमाल किया जाएगा, भले ही बेसक्लास मेटाक्लास निर्दिष्ट करता हो या नहीं। – Marcin