【发布时间】:2020-04-09 22:12:26
【问题描述】:
代码:-
class Celsius:
def __get__(self, obj, owner):
return self.__fahrenheit
def __set__(self, obj, value):
if not isinstance(value, int):
raise TypeError("'fahrenheit' must be an integer.")
self.__fahrenheit = value
class Temperature:
fahrenheit = Celsius()
celsius = 0.0
def __init__(self,fahrenheit):
self.fahrenheit = fahrenheit
#Temperature.fahrenheit = Temperature.celsius + 32
Temperature.celsius = float(self.fahrenheit - 32)
e1 = Temperature(78)
print(e1.fahrenheit, e1.celsius)
e1.celsius = 2.0
print(e1.fahrenheit, e1.celsius)
输出:- 78 46.0 78 2.0
我希望 e1.celsius = 2.0 时的 e1.fahrenheit 值为 34,但不想再添加任何方法或类。
【问题讨论】:
-
请格式化代码 - 选择它并输入
ctrl-k。 .. Formatting help ... more Formatting ... Formatting sandbox -
问题是什么?
-
我的理解是,OP希望在分配摄氏度属性
e1.celsius = 2.0后更改fahrenheit属性。这可以通过 setter 方法 (geeksforgeeks.org/getter-and-setter-in-python) 来完成。但是,他不会满足不添加其他方法的约束。
标签: python dependency-properties