2011-05-31 13 views

cevap

21

Bir nesne dizine eklendiğinde, nesne sınıfında ilk olarak __getitem__ özel yöntemi aranır. Bir sınıfın kendisi bir nesnedir ve bir sınıfın sınıfı genellikle type'dur. Yani onun metaclass yeniden tanımlayabilirsiniz (o type bir alt sınıfını yapmak), bir sınıf için __getitem__ geçersiz kılmak için: metaclass bu şekilde belirtilir Python3 yılında

class MetaA(type): 
    def __getitem__(cls,val): 
     return "It works" 

class A(object): 
    __metaclass__=MetaA 
    pass 

print(A[0]) 
# It works 

:

class A(object, metaclass=MetaA): 
    pass 
+0

Güzel ve sweet :) – Woltan

+0

Python3 farklı bir şekilde belirtilir. Yukarıda nasıl olduğunu göstermek için kod ekledim. –

+1

@ups: py3 içinde – unutbu