问题描述
在这个 Python 程序中,我创建了一个 Employee 类,它有一个受保护的实例属性“_id”。我的理解是,在 Python 中,要创建受保护的属性,您需要以单个下划线开头的名称。但是,它允许我在类之外访问这个受保护的属性。这个程序的输出是: 12345
为什么要这样做?对不起,如果这是一个愚蠢的问题!我找不到任何解释正在发生的事情或我做错了什么的任何地方。
class Employee:
def __init__(self,full_name,ID = 0):
self._firstname,self._lastname = full_name.split(" ")
self._id = ID
@property
def firstname(self):
return self._firstname
@property
def id(self):
return self._id
@firstname.setter
def firstname(self,new):
self._firstname = new
@id.setter
def id(self,new):
self._id = new
@firstname.deleter
def firstname(self):
self._firstname = None
@id.deleter
def id(self):
_id = None
bob = Employee("Billy Bob",12345)
print(bob._id)
解决方法
谢谢。我现在明白下划线只是约定俗成。我对认为存在访问修饰符感到困惑,因为当我将约定用于私有属性“__”时,它不会让我从外部访问该属性。它不允许我访问它的原因是名称修改。