• Python基础之魔术方法(一个序列容器的魔术方法)


    # 创建自己想要的序列容器魔术方法
    '''
    __len__():调用len(obj)函数会调用这个魔术方法
    __getitem__(self,key):在使用下标操作temp['key']以及切片操作的时候会执行这个魔术方法。
    __setitem__(self,key,value):在给这个容器设置key和value的时候会调用这个魔术方法。
    __delitem__(self,key):在删除容器中的某个key对应的这个值的时候会调用这个魔术方法。
    __iter__(self):在遍历这个容器的时候,会调用容器的这个方法,然后返回一个迭代器,再调用这个迭代器的__next__方法。
    __reversed__(self):在调用reversed(obj)函数的时候会调用这个方法。反转
    '''

    class LVlist(object):

    def __init__(self,values=None):
    if values:
    self.values = values
    else:
    self.values = []

    def __len__(self):
    return len(self.values)

    def __getitem__(self, item):
    # 方式一
    if isinstance(item,slice):
    return self.values[item.start:item.stop:item.step]
    else:
    return self.values[item]
    # 方式二
    # return self.values[item]

    def __setitem__(self, key, value):
    self.values[key] = value

    def __delitem__(self, key):
    del self.values[key]

    def __iter__(self):
    return iter(self.values)

    def __reversed__(self):
    return reversed(self.values)

    lv = LVlist(values = [1,2,3])
    print("__len__()对象返回值:{}".format(len(lv)))
    print("__getitem__()对象返回值(index):{}".format(lv[0]))
    print("__getitem__()对象返回值(切片返回):{}".format(lv[0:2]))
    lv[0] = 'Tao'
    print("__setitem__()对象返回值:{}".format(lv[0:2]))
    print("__delitem__()对象返回值:{}".format(lv[0]))
    print("__delitem__()对象返回值(del后):{}".format(lv[0]))
    print("__iter__()对象返回值:{}".format(lv)) # 返回的是List
    for i in lv:
    print("__iter__()对象返回值:{}".format(i))

    print("__reversed__()对象返回值:{}".format(lv)) #返回的是List
    for ia in reversed(lv):
    print("__reversed__()对象返回值:{}".format(ia))
  • 相关阅读:
    杂谈:大容量(T级容量)的网盘的意义
    Direct2D教程VII——变换几何(TransformedGeometry)对象
    Direct2D教程VI——转换(Transform)
    yum回滚至Kubernetes1.15.7版本
    denied: requested access to the resource is denied
    Jenkins构建Vue项目
    修改kubelet启动参数
    http: TLS handshake error from x.x.x.x:43534: unexpected EOF
    Kubernetes 集群升级docker版本
    Nginx服务加到systemctl
  • 原文地址:https://www.cnblogs.com/Teachertao/p/14033608.html
Copyright © 2020-2023  润新知