【发布时间】:2019-02-20 20:51:11
【问题描述】:
我正在尝试使用 python 描述符解决问题。 代码如下
class Celsius( object ):
def __init__( self, value=0.0 ):
self.value= float(value)
def __get__( self, instance, owner ):
return float(self.value)
def __set__( self, instance, value ):
self.value= float(value)
class Fahrenheit( object ):
def __get__( self, instance, owner ):
return (instance.celsius * 9 / 5 + 32.0)
def __set__( self, instance, value ):
instance.celsius= (float(value)-32.0) * 5 / 9
class Temperature( object ):
def __init__(self, fahrenheit):
self.fahrenheit = fahrenheit
fahrenheit = Fahrenheit()
celsius = Celsius()
t1 = Temperature(32)
print(t1.fahrenheit, t1.celsius)
t1.celsius = 0
print(t1.fahrenheit, t1.celsius)
预期的 O/P 是
32 0.0
32.0 0.0
但我明白了
32.0 0.0
32.0 0.0
请帮助我应该在哪里更改或是否有其他更好的方法。
【问题讨论】:
-
他们都返回
floats,你为什么要在那里期待int? -
你说你得到的输出是我对你的代码的期望。为什么你认为你第一次访问它时应该从
t1.fahrenheit获得32?此外,该描述符设计非常奇怪,因为Temperature的每个实例都将共享相同的温度值(因为它们位于Celsius描述符实例中)。将基础值保存在某个地方的实例中会更自然。 -
我需要将 O/P 设为 32 0.0 32.0 0.0 。我正在尝试弄清楚如何做到这一点
-
我正在寻找在我的代码中进行哪些更改以获得所需的 O/P