Sau khi đọc tuyệt vời SO post, tôi đã cố gắng crafting một metaclass cấp module:Python metaclass và cơ sở đối tượng lớp
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()
này không hoạt động (ví dụ "môđun metaclass" không được in) trừ khi tôi xóa lớp cơ sở object
của Foo. Làm thế nào mà?
LƯU Ý: Tôi đang sử dụng Python 2.6.1.
Đặc điểm kỹ thuật không nói gì như vậy. Những gì nó nói là nếu có một baseclass, metaclass của baseclass sẽ được sử dụng, bất kể có hay không baseclass chỉ định một metaclass. – Marcin