У меня возникла проблема с возвращением значения в классе.
class Student:
def __init__(self, name):
self.name = name
self.intro = "my name is " + self.name
st = Student("cheng")
print(st.name)
print(self.intro)
st.name = 'xiaoyu'
print(st.name)
print(self.intro)
Выход:
cheng
my name is cheng
xiaoyu
my name is cheng #Q1:why does self.intro not change?
А затем создайте метод класса для возврата переменной self.intro
, он работает следующим образом:
class Student:
...
#self.intro = 'my name is ' + self.name
def intro(self):
return 'my name is ' + self.name
...
Кроме того, я также встречаю запутанный пример со свойством BIF decoator.
class Celsius:
def __init__(self, temperature = 0):
self.temperature = temperature
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 = value
temperature = property(get_temperature,set_temperature)
#equal to below code:
#temperature = property()
#temperature = temperature.getter(get_temperature)
#temperature = temperature.setter(set_temperature)
>>>c = Celsius()
>>>"Setting value"
почему там печатается только «Значение настройки», я думаю, что «Получение значения» также должно быть напечатано. Кажется, что когда экземпляр Celsius (), когда выполняются self.tempera = Temperature, он вызывает метод set_teuration, почему?
Я новичок в Python, спасибо за ваше любезное и подробное объяснение.