鱼C论坛

 找回密码
 立即注册
查看: 1045|回复: 2

[已解决]python 46课问题

[复制链接]
发表于 2017-3-31 11:47:27 | 显示全部楼层 |阅读模式

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

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

x
红色字那句,为什么是return Value    不是 return self.Value


  1. import os
  2. import pickle

  3. class MyDes:
  4.     saved = []

  5.     def __init__(self, name = None):
  6.         self.name = name
  7.         self.filename = self.name + '.pkl'

  8.     def __get__(self, instance, owner):
  9.         if self.name not in MyDes.saved:
  10.             raise AttributeError("%s 属性还没有赋值!" % self.name)

  11.         with open(self.filename, 'rb') as f:
  12.             value = pickle.load(f)

  13.         [color=Red]return value[/color]

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

  18.     def __delete__(self, instance):
  19.         os.remove(self.filename)
  20.         MyDes.saved.remove(self.name)
复制代码
最佳答案
2017-3-31 13:46:48
因为这个value就是方法里面的局部变量。。。
你value = pickle.load(f),然后返回value。
如果用self.value就是取类成员变量了,但是又没有定义这个成员变量。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-31 13:03:52 | 显示全部楼层
self.Value不存在啊,哪里有声明过这个变量么?
代码里面只有value = pickle.load(f)
当然返回的是value
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-31 13:46:48 | 显示全部楼层    本楼为最佳答案   
因为这个value就是方法里面的局部变量。。。
你value = pickle.load(f),然后返回value。
如果用self.value就是取类成员变量了,但是又没有定义这个成员变量。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 01:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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