编程语言
首页 > 编程语言> > python-二次加班标准型(包装)

python-二次加班标准型(包装)

作者:互联网

二次加工标准类型(包装)

二次加工标准型中有两种方式定制自己的数据类型:继承的方式/授权的方式

继承的方式

# 继承
class List(list):
    def __init__(self,item,tag=False):
        super().__init__(item)
        self.tag=tag
    def append(self, p_object):
        if not isinstance(p_object,str):
            raise TypeError
        super().append(p_object)
        # self.append(p_object) 报错,无限循环
    def clear(self):
        if not self.tag:
            raise PermissionError
        super().clear()

l=List([1,2,3],False)
print(l)
print(l.tag)

l.append('saf')
print(l)

# l.clear() #异常

l.tag=True
l.clear()

授权的方式

# 授权
class List:
    def __init__(self,seq,permission=False):
        self.seq=seq
        self.permission=permission
    def clear(self):
        if not self.permission:
            raise PermissionError('not allow the operation')
        self.seq.clear()

    def __getattr__(self, item):
        return getattr(self.seq,item) 
        # 没有修改的功能,通过__getattr__在原数据类型中调用

    def __str__(self):
        return str(self.seq)
l=List([1,2,3])  #传进来的参数是列表,授权的就是列表的相关方法
# l.clear() #此时没有权限,抛出异常


l.permission=True
print(l)
l.clear()
print(l)

#基于授权,获得insert方法
l.insert(0,-123)
print(l)

标签:__,seq,python,self,加班,标准型,print,clear,def
来源: https://www.cnblogs.com/liuxu2019/p/12115934.html