VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 描述符

 
复制代码
# 描述符,相当于一个代理
class Str:
    def __init__(self,name):
        self.name = name
    # 取值操作时使用
    # instance:传入对象
    # owner:对象的类
    def __get__(self, instance, owner):
        print("get--->",instance,owner)
        # 返回对象的name属性
        return instance.__dict__[self.name]
    # 赋值操作时使用
    def __set__(self, instance, value):
        print("set-->",instance,value)
        # 设置属性
        instance.__dict__[self.name] = value
    # 删除操作时使用
    def __delete__(self, instance):
        print("delete——--》",instance)
        instance.__dict__.pop(self.name)
class People:
    name=Str('name')
    print(name)
    def __init__(self,name,age,salary):
        self.name=name
        print(self.name)
        self.age=age
        self.salary=salary

p1 = People('wangconng',21,-1000)

# 调用
print(p1.__dict__)
p1.name

# 赋值
print(p1.__dict__)
p1.name = 'cong'
print(p1.__dict__)

#删除
print(p1.__dict__)
del p1.name
print(p1.__dict__)

# 描述符分为两种
# 数据描述符:至少实现了__set__(),__get__()
# 非数据描述符:没有实现__set__()
# 类操作属性>数据描述符
# 数据描述符 > 对象操作属性
# 对象描述符 > 非数据属性
# 非数据属性 > 找不到
复制代码

 

来源:https://www.cnblogs.com/cong12586/p/11372332.html

相关教程