看看这篇文章,它解释了Python属性。
(您可以通过 archive.ph 访问它以绕过付费墙。)
文章中给出了以下代码:
# employee.py
from datetime import date
class Employee:
def __init__(self, name, birth_date, start_date):
self.name = name
self.birth_date = birth_date
self.start_date = start_date
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value.upper()
# ... etc ...
请注意,在函数
__init__
中,self.name
被初始化为 没有 下划线。其他属性 birth_date
和 start_date
也是如此。
但是,在属性 getter 和 setter 中,访问的变量是前面带下划线的名称。
name
-> _name
这是一个错误,还是故意的?
__init__
函数是否应该初始化_name
而不是name
?
PEP 8 描述
_single_leading_underscore
适合表示
“内部使用”指标较弱
因此您可以使用
_
前缀来向用户传达不应直接分配的信息。请记住,这只是约定,并不阻止用户这样做。