Python中的实例属性getter

Python中的实例属性getter,python,python-3.x,Python,Python 3.x,我尝试为类属性编写自定义getter。但我无法在Python中找到正确的语法。我尝试了前面提到的方法,但使用@属性装饰器似乎不起作用,或者我调用的方法不正确 类别: class Comment: def __init__(self): self.productRecommender = None @property def productRecommender(self): return self.productRecommender if self.product

我尝试为类属性编写自定义getter。但我无法在Python中找到正确的语法。我尝试了前面提到的方法,但使用
@属性
装饰器似乎不起作用,或者我调用的方法不正确

类别:

class Comment:
  def __init__(self):
    self.productRecommender = None

  @property
  def productRecommender(self):
    return self.productRecommender if self.productRecommender is not None else 'Onbekend'
在代码中设置属性(使用Selenium,comment是comment()的实例),如果找不到类,则应保持
None

try:
  comment.recommender = comment.find_element_by_class_name('recommend').text
except NoSuchElementException:
  pass
正在尝试访问该值

comment.productRecommender

它应该是self.\u productRecommender,而不是self.productRecommender

class Comment():
    def __init__(self):
        self._productRecommender = None

    @property
    def productRecommender(self):
        print("getter called")
        return self._productRecommender if self._productRecommender is not None else 'Onbekend'

c = Comment()
foo = c.productRecommender

与链接问题一样,所有对实际基础属性的引用都应加前缀:
self.\u productRecommender
@Tomerikoo抱歉缩进。要解决这个问题(这是一个复制/粘贴的问题)。您是指comment.productRecommender comment.self.productRecommender吗?属性名称不能与实例属性名称相同。将实例属性名称更改为
\u productRecommender
,正如@TomerikooI在类本身内部提到的那样。无论您在哪里拥有
self.productRecommender
它都应该是
self.\u productRecommender
@Tomerikoo,谢谢。我终于看到了这里的所有评论和发布的示例代码。需要更多地习惯Python中的OO。一些解释使得答案比只使用代码更有价值。。。