|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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属性,实现真正意义上的属性删除,求大神解答 |
|