下面是一个从本教程中设计的类,旨在演示Python中property的功能。
该类设置和获取摄氏温度,并将其转换为华氏温度:
该类设置和获取摄氏温度,并将其转换为华氏温度:
class Celsius:
def __init__(self, current_temp = 25):
self.temperature = current_temp
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
def get_temperature(self):
print("Getting value")
return self._temperature
def set_temperature(self, value):
if value < -273:
raise ValueError("Temperature below -273 is not possible")
print("Setting value")
self._temperature = 50
temperature = property(get_temperature,set_temperature)
问题: self.temperature
(一个实例变量)是否确实引用类变量temperature
?如果是,为什么?
示例:
obj = Celsius()
print(obj._temperature, obj.temperature)
返回:
设置值 获取值 50 50
我只是不明白一个已赋值的实例变量(current_temp)怎么会引用一个类变量。如果我有什么误解,对不起。
self._temperature
设置为50? - user2357112self.temperature
是通过属性设置而不是在init期间通过赋值设置的。我刚刚更新了这个例子。还有疑惑吗? - DSHNEW_NAME
作为名称,那么您将能够执行self.NEW_NAME = 30
,并且它将调用set_temperature
。 - Karl Knechtel