我的问题几乎与this one相同,但它看起来像一个死线程,我想问的问题看起来有点埋葬。
问题:如果我想使用@property
制作私有属性,我应该为底层变量命名什么?
代码:
# I want to replace "NAME" with something.
class MyClass(object):
def __init__(self, x):
self.NAME = x
@property
def _x(self):
validate_x_get()
return self.NAME
@_x.setter
def _x(self, val):
validate_x_set(val)
self.NAME = val
...
说明:我想使用@property
和@valname.setter
来允许MyClass
方法很好地与self.NAME
一起使用。链接问题的答案通常说只是制作私人的getter和setter,但感觉就像有should be a better way。
讨论:
NAME
的自然名称为_x
,但这会使self._x
无限递归。 x
将公开,这不是我想要的。__x
似乎是对mangling的误用,这是为了防止子类化问题。 _x_private
,_stored_x
,_my_x
都令人不快。 有什么建议吗?
答案 0 :(得分:1)
总结一下讨论:
本着这种精神,我会在我的代码库中提倡_x_
(最少的其他字符)。感谢所有评论者。