• 【Python学习之旅】---描述符的应用


    class  Typed:
    "定义一个描述符"
    def __init__(self,key,name):
    self.key=key #self.key=‘name'
    self.name=name #指定类型
    def __get__(self, instance, owner): #instance-->实例f1 ,owner-->实例所属的类
    print('这是get方法')
    # print('instance参数【%s】' %instance)
    # print('owner参数【%s】' %owner)
    return instance.__dict__[self.key] #返回'name'的值

    def __set__(self, instance, value): #instance-->实例f1 ,value-->赋的值’chenyuxia'
    print('这是set方法')
    # print('instance参数【%s】' %instance)
    # print('value参数【%s】' %value)
    if not isinstance(value,self.name): #当值不是字符窜或整形内容,
    raise TypeError('%s传入的不是%s' %(self.key,self.name)) #抛出报错
    instance.__dict__[self.key]=value #否则将值加入到f1字典

    def __delete__(self, instance):
    instance.__dict__.pop(self.key) #删除key和值

    class Foo:
    name=Typed('name',str) #将数据描述符赋值给name
    age=Typed('age',int)
    def __init__(self,name,age):
    self.name=name
    self.age=age
    f1=Foo('123',18) #触发name=Typed赋值操作,接着触发set方法
    print(f1.name) #触发get方法
    f1.age=123 # 实际是在操作Typed中的name,触发set方法
    print(f1.__dict__)
    del f1.name #触发删除方法
    print(f1.__dict__)

  • 相关阅读:
    在web大作业中曾经遇到的程序测试案例…
    软件测试技术 hw3
    软件测试技术 hw2
    软件测试技术 上机实验1
    软件项目管理 hw1
    软件测试技术 hw1
    软件测试技术-第七题
    软件测试技术 上机实验1
    软件测试技术 homework2
    软件项目管理 homework1 曾经做过的project
  • 原文地址:https://www.cnblogs.com/chenyuxia/p/12183218.html
Copyright © 2020-2023  润新知