Python 属性应该使用下划线作为名称前缀吗?

问题描述 投票:0回答:1

看看这篇文章,它解释了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

python properties
1个回答
0
投票

PEP 8 描述

_single_leading_underscore
适合表示

“内部使用”指标较弱

因此您可以使用

_
前缀来向用户传达不应直接分配的信息。请记住,这只是约定,并不阻止用户这样做。

© www.soinside.com 2019 - 2024. All rights reserved.