Bra*_*Deo 2 python python-2.7 python-3.x
我对一些事情有点困惑。
何时以及如何使用以单下划线_和双下划线开头的变量名。__
什么时候应该@property使用标签
变量何时应在 init 方法外部声明,何时应在 init 方法内部声明?
下面是一个代码示例,展示了示例用法(可能会被错误使用)。
class GenClass(object):
_variable1 = None
__variable2 = None
@property
variable3 = None
def __init__(self, v4):
self.variable4 = v4
Run Code Online (Sandbox Code Playgroud)
所有这些有什么区别?它们看起来很隐晦,肉眼看起来是一样的,但我已经开始注意到它们都是不同的。
_和__在变量/属性名称的开头表示该属性应该分别是“受保护的”或“私有的”,并且不应被同一类/模块之外的代码触及。__触发一些实际的轻名称修改,以真正防止与继承类的名称冲突,但最终两者都只是向程序员暗示预期用法的约定。如果变量不是“您的”,请不要触摸_它,因为作者不保证该属性将始终存在和/或始终有用。
@property当您想要在访问属性时执行方法(而不是直接访问普通属性)时,应该使用。这有多种用途,包括计算/虚拟属性(在读取属性时计算值)和强制只读属性:
@property
def foo(self):
'''Can read, but can't write to .foo'''
return 'bar'
Run Code Online (Sandbox Code Playgroud)在类上声明属性会使该属性在该类的所有实例中都相同。将其声明为 onself使其特定于该实例。通常你想要后者。
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |