Python允许我访问类外的受保护实例属性



在这个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)

谢谢。我现在明白了下划线只是一种惯例。我对访问修饰符的存在感到困惑,因为当我对私有属性'__'使用约定时,它不允许我从外部访问该属性。它不让我访问它的原因是名称混淆。

最新更新