11
我需要改變以完成這項工作?如何編寫靜態python getitem方法?
class A:
@staticmethod
def __getitem__(val):
return "It works"
print A[0]
注意,我調用__getitem__
方法的類型A
。
我需要改變以完成這項工作?如何編寫靜態python getitem方法?
class A:
@staticmethod
def __getitem__(val):
return "It works"
print A[0]
注意,我調用__getitem__
方法的類型A
。
當一個對象被索引時,特殊方法__getitem__
首先在對象的類中被查找。一個類本身就是一個對象,而一個類的類通常是type
。因此,要覆蓋__getitem__
一類,你可以重新定義它的元類(使它的type
一個子類):
class MetaA(type):
def __getitem__(cls,val):
return "It works"
class A(object):
__metaclass__=MetaA
pass
print(A[0])
# It works
在Python3元類指定這樣:
class A(object, metaclass=MetaA):
pass
尼斯和甜:)在py3中 – Woltan 2011-05-31 13:13:21
它不 – 2013-09-02 12:03:50
@ups:元類在Python3中以不同的方式指定。我已經添加了代碼以顯示如何,上面。 – unutbu 2013-09-02 12:22:43