__len__()和__getitem__()函數
關於魔法方法的詳情請參見前文魔法方法:__getitem__()和__len__()。
1.__len__()函數:
如果希望類可以像列表一樣獲取實例的元素個數,需要在其中定義__len__()函數,它返回指定元素的個數。只要正確實現了__len__()方法,就可以用len()函數返回類實例的“長度”,如下所示:
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
s = Students('zhang', 'wang', 'li')
print(len(s))
2.__getitem__()函數:
如果希望類的實例對象可以以P[key]的形式取值,需要在其中定義了__getitem__()方法,當實例對象做P[key]運算時,就會調用類中的__getitem__()方法,如下所示:
class Students(object):
def __init__(self, *args):
self.names = args
def __getitem__(self, key):
return “hello world”
s = Students('zhang', 'wang', 'li')
print(s[1]) # 此時會輸出“hello world”,證明s[1]調用了__getitem__()函數