Python中的实例属性getter
我尝试为类属性编写自定义getter。但我无法在Python中找到正确的语法。我尝试了前面提到的方法,但使用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
@属性装饰器似乎不起作用,或者我调用的方法不正确
类别:
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。一些解释使得答案比只使用代码更有价值。。。