【发布时间】:2021-06-07 00:08:27
【问题描述】:
在这个 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)
【问题讨论】:
-
Python 没有访问修饰符。 没有访问控制。
-
我以为有?我不知道我是否遗漏了一些东西,但是有很多关于它的 youtube 视频,以及在线资源说有访问修饰符。如果我放一个 __ 前缀,它就会变成“私有”,如果我尝试访问该属性,它会给我一个属性错误。
-
Youtube上有很多错误的视频。 (另外,
__不是私有的 - 它会激活名称修改。您仍然可以正常访问属性,但更难意外这样做。)