gpt4 book ai didi

python - 在 Python 中,内部属性的后备存储的首选命名约定是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:04:22 24 4
gpt4 key购买 nike

假设您在 Python 中有一个公共(public)方法,其主要目的是检索基础数据属性(即内部后备存储)的值。该方法可能具有惰性评估逻辑等。属性是此类方法的一个示例。

那么很自然地方法和数据属性使用相同的名称,除了数据属性的下划线前缀。例如--

class C(object):
def __init__(self):
self._x = None

@property
def x(self):
"""I'm the 'x' property."""
return self._x

(来自 Python's "property" documentation)

但是,如果该方法供内部使用并且本身带有下划线前缀,那么首选约定是什么?用两个前导下划线作为后备存储的前缀会调用名称重整,因此并不理想。

两种可能性可能是——

def _get_x(self):
return self._x

def _x(self):
return self._x_

不过,Python 风格表示第二个(附加下划线)应该只用于避免与保留关键字发生冲突。

最佳答案

首选约定是使用单个前导下划线。

这是 PEP 8私有(private)属性的推荐。

请参阅 property() 的文档字符串中的示例:

>>> help(property)
Help on class property in module builtins:

class property(object)
| property(fget=None, fset=None, fdel=None, doc=None) -> property attribute
|
| fget is a function to be used for getting an attribute value, and likewise
| fset is a function for setting, and fdel a function for del'ing, an
| attribute. Typical use is to define a managed attribute x:
| class C(object):
| def getx(self): return self._x
| def setx(self, value): self._x = value
| def delx(self): del self._x
| x = property(getx, setx, delx, "I'm the 'x' property.")
|
| Decorators make defining new properties or modifying existing ones easy:
| class C(object):
| @property
| def x(self): return self._x
| @x.setter
| def x(self, value): self._x = value
| @x.deleter
| def x(self): del self._x
|

关于python - 在 Python 中,内部属性的后备存储的首选命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2173409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com