【问题标题】:Properties in IronPython: eternal loopIronPython 中的属性:永恒循环
【发布时间】:2016-11-15 12:57:19
【问题描述】:

好吧,我对 python 非常陌生,现在我尝试将 c# 代码翻译成 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()

我得到了一个永恒的调用,打印“获取价值”,最后是 StackOverflowException。属性有什么问题?这是使用 ref 参数翻译 getter 和 setter 的一小部分任务,但我无法继续处理这个错误。

【问题讨论】:

    标签: c# python properties ironpython


    【解决方案1】:

    您的 getter 和 setter 应该返回/设置 self._temperature(支持字段),而不是 self.temperature(属性) - 通过自引用,您导致了无限循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2019-08-09
      • 2022-01-18
      • 2013-03-27
      • 2014-03-04
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多