python 装饰器 浅拷贝深拷贝

1.装饰器遵循的原则

ocp 原则: 开闭原则, 为了软件开发的稳定性而设计的原则

装饰器函数要满足的条件

  • 不能改变原来的函数代码
  • 为函数添加新的功能
  • 不能改变函数的调用方法
  • 面向扩展开放,面向修改关闭

2.浅拷贝,深拷贝

  •    import copy
  • list[10,20,[10,20]]
  • count = list  复制                原始队列改变,被赋值的队列也发生改变
  • 浅拷贝 copy.copy()            外层为新的引用,内层为原有的引用
  • 深拷贝 copy.deepcopy()    外层,内层都为新引用

3. 进制转换

  •  10进制转换为2进制
    • bin(10)
  •  10进制转换为16进制
    • hex(10)
  •  10进制转化为8进制
    • cot(10)
  •  2 进制转换为10进制
    • int('1001',2)
  •  2 进制转换为16进制
    • hex(ob1001)
  •  16进制转换为2进制
    • bin(0xa)

4. 元类

  • 元类用来创建类
  • 类的类型为type
  • type的类型为type
  • 使用type创建类
    • s = type('Student',(),{'name':hello})
  •  通过type创建类,继承类,添加实例方法,静态方法,类方法

  • 使用元类的好处
    • 拦截类的创建
    • 修改类
    • 返回修改之后的类
  • hasattr()  # 判断是否包含对应的属性
    • hasattr(object,name)
  • getattr()  # 用于返回一个对象属性值
    • getattr(object,name,default)
  • setattr()   # 用于设置属性值,该属性必须存在
    • setattr(object,name,value)
  • delattr()   # 删除属性
    • delattr(object,name)
  • 自定义元类
#                     类名    父类名          属性字典
def renameattribute(classname,parentclass, attributeddic):
    # print(classname)
    # print(parentclass)
    # print(attributeddic)
    newwattribute = {}
    for key, value in attributeddic.items():
        # print(key, value)
        # startswith用于检测字符串是否以什么开头
        if not key.startswith("__"):
            #.lower()转换为小写
            key = classname.lower() + key
            newwattribute[key]= value

    return type('Hello',parentclass,newwattribute)
    # for key,value in newwattribute.items():
    #     print(key,value)
    pass

class Deft(object, metaclass=renameattribute):
    age = 20

a1 = Deft()
print(hasattr(a1, 'age'))
print(hasattr(a1, 'deftage'))
print(a1.__class__)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值