鱼C论坛

 找回密码
 立即注册
查看: 4821|回复: 4

[已解决]描述符有关

[复制链接]
发表于 2015-12-25 20:35:05 | 显示全部楼层 |阅读模式
2鱼币
class Celsius:
    def __init__(self, value = 26.0):
        self.value = float(value)

    def __get__(self, instance, owner):
        return self.value

    def __set__(self, instance, value):
        self.value = float(value)

class Fahrenheit:
    def __get__(self, instance, owner):
        return instance.cel * 1.8 + 32

    def __set__(self, instance, value):
        instance.cel = (float(value) - 32) / 1.8

class Temperature:
    cel = Celsius()
    fah = Fahrenheit()
此乃甲鱼上课例题,已知Temperature 的 fah 会触发cel 的 __set__, 但是 cel 怎样触发 fah 的 __set__?
最佳答案
2015-12-25 20:35:06
假设做T=Temperature()
注意 Celsius类调用的是self.value,也就是T.cel.value,返回值可以对T.cel赋值。而Fahrenheit类调用的是,instance.cel和instance.fah也就相当于对T.cel和T.fah直接读取或赋值。
3#说的就是对的,可能表述你不一定能一下接受。

最佳答案

查看完整内容

假设做T=Temperature() 注意 Celsius类调用的是self.value,也就是T.cel.value,返回值可以对T.cel赋值。而Fahrenheit类调用的是,instance.cel和instance.fah也就相当于对T.cel和T.fah直接读取或赋值。 3#说的就是对的,可能表述你不一定能一下接受。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-25 20:35:06 | 显示全部楼层    本楼为最佳答案   
假设做T=Temperature()
注意 Celsius类调用的是self.value,也就是T.cel.value,返回值可以对T.cel赋值。而Fahrenheit类调用的是,instance.cel和instance.fah也就相当于对T.cel和T.fah直接读取或赋值。
3#说的就是对的,可能表述你不一定能一下接受。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-18 15:20:15 | 显示全部楼层
哪一讲里面的?能更详细点吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-29 19:32:51 | 显示全部楼层
不用cel 来触发 fah的,因为统一是用cel来结算的。
所以只要cel的结果就可以,fah是通过cel转换的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-8 13:55:34 | 显示全部楼层
没看明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 14:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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