在Python中使用描述符没有得到预期的结果

问题描述 投票:1回答:3

我是Python的新手......正在尝试使用Descriptor编写代码并在代码下运行以将华氏温度更改为摄氏温度。但我没有得到确切的结果。有人可以协助,它是如何工作的?

尝试下面的代码

import sys
import os

class Celsius:
    def __get__(self, obj, owner):
        return self.celsius

    def __set__(self, obj, value):
        self.celsius = (value-32)*5/9

class Temperature:
    celsius = Celsius()

    def __init__(self, f):
        self.fahrenheit = f

t1 = Temperature(32)
t1.celsius = 0

if __name__ == "__main__":
        t1 = Temperature(int(input()))
        print(t1.fahrenheit, t1.celsius)

预期结果:(212,100.0)(根据公式)实际结果:(212,-17.77777777777778)如何计算-17?

python descriptor
3个回答
0
投票

你不应该用0初始化t1.celsius,而是在celsius中使用Temperature.__init__的setter:

class Temperature:
    celsius = Celsius()

    def __init__(self, f):
        self.fahrenheit = self.celsius = f

但是:Kua zxsw指出


0
投票
https://repl.it/repls/UsableSunnyConfig

这是你的错。你正在创建零值的Celsius类,所以setter设置(0 - 32)* 5/9,即 - 17.777777777778


0
投票

这是一个简单的温度管理器,可以处理以下对话:Kelvin,Fahrenheit,Celsius

t1.celsius = 0
© www.soinside.com 2019 - 2024. All rights reserved.