|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class MyDes:
def __init__(self,value=None,name=None):
self.value=value
self.name=name
def __get__(self, instance, owner):
print('正在获取变量',self.name)
return self.value
def __set__(self, instance, value):
print('正在修改变量', self.name)
self.value = value
def __delete__(self,instance):
print('正在删除变量', self.name)
class dd:
x=MyDes(5,'xiaojiayu')
执行结果
cc=dd()
正在获取变量 xiaojiayu
正在获取变量 xiaojiayu
cc.x='xxx'
正在修改变量 xiaojiayu
正在获取变量 xiaojiayu
为什么在赋值阶段就会得到'正在获取变量 xiaojiayu'输出,
而且刚敲下cc.x上面又出现一行正在获取变量 xiaojiayu,
不知道问题出在哪了,求助大神们
你使用的应该是 PyCharm 中的控制台,所以在你打下 cc.x 时 未回车就会有打印情况
这是因为 PyCharm 是独立的虚拟环境,导致可能会在你实际未调用过程中先进行了访问,是正常现象,不会影响你正常使用
你可以将 cc=dd()、 cc.x = "xxx" 写入代码中去一同测试,就不会出现多重打印的情况,即:
class MyDes:
def __init__(self,value=None,name=None):
self.value=value
self.name=name
def __get__(self, instance, owner):
print('正在获取变量',self.name)
return self.value
def __set__(self, instance, value):
print('正在修改变量', self.name)
self.value = value
def __delete__(self,instance):
print('正在删除变量', self.name)
class dd:
x=MyDes(5,'xiaojiayu')
cc=dd()
cc.x='xxx'
|
|