python权限授权_Python包装授权

1、什么是包装# -*- coding : utf-8 -*-

"""

包装类,就是给被包装的类加个壳;被包装内实现壳的内部,而包装内提供壳的外部(接口),有点类似于继承关系,

不过也不完全时,因为通过继承也可以实现包装效果,不使用继承同样可以实现包装效果。下面通过一个例子来展示

包装的概念

"""

class PackageList(object):

"包装List类型,使用非继承实现"

def __init__(self):

"构造方法,建立一个内部list对象"

self.innerList = []

def add(self, element):

"添加一个元素"

self.innerList.append(element)

def remove(self, element):

"删除一个元素"

self.innerList.remove(element)

def extend(self, elements):

"扩展一个元素或者一个列表"

if isinstance(elements, list):

self.innerList.extend(elements)

else:

self.innerList.append(elements)

def get(self, start = 0, end = -1, step = 1):

"获取列表,或者某个元素,或者某个区域的元素"

if isinstance(start, int) and isinstance(end, int) and isinstance(step, int):

if end == -1:

return self.innerList[start::step]

else:

return self.innerList[start : end : step]

else:

raise TypeError

if __name__ == "__main__":

packageList = PackageList()

# 添加一个元素

packageList.add(1)

# 添加一个序列

packageList.extend([2, 3, 4])

# 删除一个元素

packageList.remove(3)

# 获取列表

print(packageList.get())

2、什么是授权

# -*- coding : utf-8 -*-

"""

授权:通俗点讲就是谁给谁权利,拥有权利的一方(授权方),授予给没有权利的一方(被授权方)。

那么python是通过什么来获取权利,或者说是如何接受授权;关键是使用__getattr__内建函数,

在python中,使用一个属性时,先到局部搜索,然后到类搜索,最后调用__getattr__函数,由于

这一点,我们可以通过这个函数去获取某个对象的权限(属性)。

注:

属性:变量和方法

"""

class FileAuthorization(object):

"实现文件对象授权"

# obj : 授权方

def __init__(self, obj):

self.__data = obj

# 重写__getattr__

def __getattr__(self, attr):

"使用内建getattr获取某个对象的属性,当python解析器在类实例和类中都没有搜索到属性时,调用"

return getattr(self.__data, attr)

if __name__ == "__main__":

file = FileAuthorization(open("./data.txt", 'w'))

file.writelines(["test1\n", "test2\n"])

file.flush()

file.close()

3、总结:

包装和授权往往使用在定制某种类,其实现的多样性,只要你能想的到,就可以出现千变万化的授权、包装实现方式,上述仅仅提供参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值