__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__()函数