马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import os
import pickle
class MyDes:
saved=[]
def __init__(self,name):
self.name=name
self.filename=self.name+'.pkl'
def __get__(self,instance,owner):
if self.filename not in MyDes.saved:
raise AttributeError("%s属性还没有赋值!"%self.name)
with open (self.filename,'rb')as f:
value=pickle.load(f)
return value
def __set__(self,instance,values):
with open(self.filename,'wb')as f:
pickle.dump(values,f)
MyDes.saved.append(self.filename)
def __delete__(self,instance):
MyDes.saved.remove(self.filename)
os.remove(self.filename)
del self
class Test:
t=MyDes('t')
def __setattr__(self,name,values):
m=int(input("设置类属性请输入1,设置实例属性请输入0\n"))
if(m==0):
super().__setattr__(name,values)
print("实例属性设置完成")
else:
setattr(Test,name,MyDes(name))
Test.__dict__[name].__set__(self,values)
print("类属性设置完成")
我想在描述符类的__delete__里边删除那个t属性,实现真正意义上的属性删除,求大神解答 |