zoukankan      html  css  js  c++  java
  • 描述符的简单理解

    内容注释都在代码里边

    #描述符Str
    class Str:
        def __get__(self, instance, owner):
            print(',使用get方法Str调用')
        def __set__(self, instance, value):
            print('使用set方法Str设置...')
        def __delete__(self, instance):
            print('使用delete方法Str删除...')
    
    #描述符Int
    class Int:
        def __get__(self, instance, owner):
            print('使用set方法使用get方法Int调用')
        def __set__(self, instance, value):
            print('使用set方法Int设置...')
        def __delete__(self, instance):
            print('使用delete方法Int删除...')
    
    class People:
        name=Str()    #新式类中类属性字典中应用另一个类
        age=Int()     #要求 另一个类中至少有get set 方法
        def __init__(self,name,age): #name被Str类代理,age被Int类代理,
            self.name=name
            self.age=age
    
    #何地?:定义成另外一个类的类属性
    
    #何时?:且看下列演示
    
    p1=People('apple',18)   #数据描述符的优先级大于实例属性
    
    # #描述符Str的使用
    # p1.name
    # p1.name='meil'
    # del p1.name
    #
    # #描述符Int的使用
    # p1.age
    # p1.age=18
    # del p1.age
    #
    # #我们来瞅瞅到底发生了什么
    print(p1.__dict__)   #{}发现实例的属性字典中为空
    print(People.__dict__)   # 'age': <__main__.Int object at 0x00000268757E2828>  age/name
                            #对应的是一个int类中的一个对象
  • 相关阅读:
    The Triangle_DP
    LITTLE SHOP OF FLOWERS_DP
    K Best(最大化平均数)_二分搜索
    Number Game_状态压缩
    Stockbroker Grapevine_Floyd
    A very hard Aoshu problem
    AOE 网络
    AOV网
    最小生成树
    [POJ] 1562 Oil Deposits (DFS)
  • 原文地址:https://www.cnblogs.com/hourglass-/p/9279247.html
Copyright © 2011-2022 走看看