python怎么重载下标运算符(不知道是不是这么叫的)
本帖最后由 hrp 于 2020-6-17 15:00 编辑百度了一下都是C++的,不知道python能不能实现,对应哪个魔法方法。
PS:小甲鱼的视频教程我才看到20几集,不知道有没有讲过,我自己看的有点拖拖拉拉,别喷我{:10_245:}
补充:就是这个 [ ]运算符,比如list1。我定义的类的实例a,能否通过重载[]实现用a替代a.func(2, 5)。 什么意思.......哈哈 如果不会打出来至少截个图看看。。 Twilight6 发表于 2020-6-17 13:52
什么意思.......哈哈
帖子更新了,麻烦大佬看一看{:10_250:} Hoiste 发表于 2020-6-17 13:53
如果不会打出来至少截个图看看。。
帖子更新了,麻烦大佬看一看{:10_250:} hrp 发表于 2020-6-17 15:02
帖子更新了,麻烦大佬看一看
哈哈 我去试试.... 我不是大佬噻~{:10_297:} 本帖最后由 Twilight6 于 2020-7-25 10:16 编辑
class Group(object):
"""支持切片操作,实现这个协议,需要实现一下魔法函数"""
def __init__(self, name, company, staffs):
self.name = name
self.company = company
self.staffs = staffs
def __reversed__(self):
self.staffs.reverse()
def __getitem__(self, item):
"""
注意,如果是切片,item则是一个slice,如果是取值,item是一个int
在对实例化对象进行索引,切片在这里实现对应的逻辑
"""
import numbers
cls = type(self)
if isinstance(item, slice):
return cls(name=self.name, company=self.company, staffs=self.staffs)
elif isinstance(item, numbers.Integral):
return cls(name=self.name, company=self.company, staffs=])
def __len__(self):
"""在对实例对象求长度"""
return len(self.staffs)
def __iter__(self):
"""返回一个迭代器,支持被遍历"""
return iter(self.staffs)
def __contains__(self, item):
"""实例对象支持in操作,"""
if item in self.staffs:
return True
return False
页:
[1]