1 回答
TA贡献1804条经验 获得超3个赞
我假设,通过使用诸如struct
,public
而private
你一定是从的背景C/C++
。Python中没有这样的东西,属性的命名纯粹是约定俗成的。我建议阅读对象名称前的单下划线和双下划线的含义是什么?.
通常对于您不希望其他人在您的课程之外使用的“私有”属性,约定是在它前面加上一个下划线,_
例如_size
. 如果你打算在外面使用它,归结为这些情况:
你希望它可以从外部写入吗?在这种情况下,您只需将其定义为
size
并在任何地方使用它你想让它从外部只读吗?在这种情况下,您可以将其设为私有并为其创建一个属性,例如:
代码:
class A:
self __init__(self, size):
self._size = size
@property
def size(self):
return self._size
您还可以将内部变量转换为另一个名称,并同时使用该不同名称使其可写。
例子:
class A:
def __init__(self, value):
self._internal_var = value
def set_data(self, value):
self._internal_var = value
def get_data(self):
return self._internal_var
data = property(get_data, set_data)
或者:
@property
def data(self):
return self._internal_var
@data.setter
def data(self, value):
self._internal_var = value
然后如果你打电话:
a1 = A(11)
print(a1.data)
a1.data = 22
print(a1.data)
将产生:
11
22
添加回答
举报