鱼C论坛

 找回密码
 立即注册
查看: 900|回复: 1

在描述符遇到了个问题

[复制链接]
发表于 2019-5-18 19:24:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 thepoy 于 2019-5-18 19:25 编辑
  1. import time as t
  2. import os

  3. os.chdir('D:\\python\\类和对象')

  4. class MyDes:
  5.     def __init__(self, value = None, name = None):
  6.         self.val = value
  7.         self.name = name

  8.     def __get__(self, instance, owner):
  9.         timeR = t.strftime("%Y-%m-%d %H:%M:%S", t.localtime())
  10.         with open('record.txt', 'a') as file:
  11.             record = '%s 读取变量:%s = %d\n' % (timeR, self.name, self.val)
  12.             file.write(record)
  13.         return self.val

  14.     def __set__(self, instance, value):
  15.         self.val = value
  16.         timeW = t.strftime("%Y-%m-%d %H:%M:%S", t.localtime())
  17.         with open('record.txt', 'a') as file:
  18.             record = '%s 修改变量:%s = %d\n' % (timeW, self.name, self.val)
  19.             file.write(record)
复制代码




如何才能做到同时传入第7行__init__中的value和name?

我的做法是:
  1. class Test:
  2.     x = MyDes(10, '金额')
复制代码


感觉很蠢


另外:
  1. import pickle
  2. import os

  3. class MyDes:
  4.     saved = []
  5.    
  6.     def __init__(self, name = None):
  7.         self.name = name
  8.         self.filename = self.name + '.pkl'

  9.     def __get__(self, instance, owner):
  10.         if self.name not in MyDes.saved:
  11.             raise AttributeError('%s 属性还没有赋值!' % self.name)
  12.         
  13.         with open(self.filename, 'rb') as file:
  14.             value = pickle.load(file)
  15.         return value

  16.     def __set__(self, instance, value):
  17.         with open(self.filename, 'wb') as file:
  18.             pickle.dump(value, file)
  19.             MyDes.saved.append(self.name)

  20.     def __delete__(self, instance):
  21.         os.remove(self.filename)
  22.         MyDes.saved,remove(self.name)

复制代码



以上代码又如何才能将第7行__init__里的name和第19行__set__里的value同时传入呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-23 19:27:37 | 显示全部楼层
第一问:这是一个标准做法,似乎并不蠢。。。
第二问:这是两个不同的方法,无法同时传入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-15 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表