鱼C论坛

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

描述符的问题

[复制链接]
发表于 2015-8-9 23:39:51 | 显示全部楼层 |阅读模式

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

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

x
代码如下:
  1. class Celsius:
  2.     def __init__(self, value):
  3.         self.value = float(value)

  4.     def __get__(self, instance, owner):
  5.         return self.value
  6.     def __set__(self, instance, value):
  7.         self.value = float(value)
  8. class Fahrenheit:
  9.     def __get__(self, instance, owner):
  10.         return instance.cel * 1.8 + 32
  11.     def __set__(self, instance, value):
  12.         instance.cel = (float(value) - 32) / 1.8

  13. class Temperature:
  14.     def __init__(self, value = 0):
  15.         self.value = value
  16.         
  17.     cel = Celsius(self.value)
  18.     fah = Fahrenheit()
复制代码

为什么 cel = Celsius(self.value) 报错
描述符不能赋 类Temperature 的实际属性的值吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-8-10 12:23:56 | 显示全部楼层
在类中,__init__产生的变量并不是该类的属性,只是能在该类中共用的变量,且__init__是在调用该类产生实例对象时才会发生的,也就是说,虽然看上去定义了self.value但是在产生实例对象前他是没有self.value的,也就是说传给Celsius类一个还不存在的变量。

呃,语言组织不大好。。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
笨小孩KK + 5 + 5 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-10 13:02:51 | 显示全部楼层
哦   明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-17 04:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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