2016-11-15 8 views
2

Ну, я очень нуб в python, и теперь я пытаюсь перевести код C# в IronPython. есть проблемы со свойствами:Свойства в IronPython: вечная петля

Вот мой класс, например (получил его от http://www.programiz.com/python-programming/property):

class SomeClass(object): 

    def __init__(self, temperature = 0): 
     self._temperature = temperature 

    def to_fahrenheit(self): 
     return (self.temperature * 1.8) + 32 

    @property 
    def temperature(self): 
     print("Getting value") 
     return self.temperature 

    @temperature.setter 
    def temperature(self, value): 
     print("Setting value") 
     self.temperature = value 

Когда я пытаюсь получить это свойство от другого класса, как этот

cb = SomeClass() 
temp = cb.to_fahrenheit() 

I получил вечный вызов с печатью «Получение значения» и, наконец, StackOverflowException. Что не так со свойствами? Это небольшая задача для перевода геттеров и сеттеров с параметрами ref, но я не могу продолжать эту ошибку. enter image description here

ответ

4

Ваш геттер и сеттер должны возвращаться/устанавливаться самостоятельно. _ температура (поле поддержки), а не self.temperature (свойство) - путем самореференции вы вызывали бесконечный цикл.

+0

Да, вы правы. Моя ошибка) – ArgorAvest