2016-11-15 22 views
2

Nun, ich bin sehr noob in Python und jetzt versuche ich C# -Code in IronPython zu übersetzen. Habe Problem mit den Eigenschaften:Eigenschaften in IronPython: ewige Schleife

Hier ist meine Klasse zum Beispiel ist (hätte es von 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 

Wenn ich versuche, diese Eigenschaft von einer anderen Klasse zu erhalten wie diese

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

I bekam einen ewigen Aufruf mit Drucken "Wert erhalten" und schließlich StackOverflowException. Was ist los mit Eigenschaften? Dies ist ein kleiner Teil der Aufgabe, Getter und Setter mit Ref-Parametern zu übersetzen, aber ich kann diesen Fehler nicht fortsetzen.

Antwort

4

Ihr Getter und Setter sollte selbst zurückgeben/einstellen _ Temperatur (das Hintergrundfeld), nicht self.temperature (die Eigenschaft) - durch Selbstreferenzierung haben Sie eine Endlosschleife verursacht.

+0

yep, du hast Recht. Mein Fehler) – ArgorAvest