如何解决如何为python类中的私有属性编写getter-setter方法?
- 操作系统:Windows 10,64 位
- 编辑器:VSCode 1.56.2
- Python:3.9.0
当我想私有这个属性时,似乎get和set函数使用@property 和 @year.setter 装饰器不起作用。
class Ab():
def __init__(self,year):
self.__year = year
print(self.__year)
@property
def year(self):
return self.__year
@year.setter
def year(self,y):
if y < 8:
self.__year = 0
else:
self.__year = y
a = Ab(5)
实际输出:5
预期输出:0
我是 Python 新手,所以在此先感谢您的帮助。
解决方法
您实际上从未修改过 Ab.year
:
class Ab():
def __init__(self,year):
self.__year = year
self.year = year # <-- this needs to be here
print(self.__year)
@property
def year(self):
return self.__year
@year.setter
def year(self,y):
if y < 8:
self.__year = 0
else:
self.__year = y
a = Ab(5)
>>> 0
顺便说一句,除非您明确想要名称修改,否则使用双前导下划线是个坏主意。
,您需要在 __init__
-- 而不是 dunder 私有属性中引用 setter。
class Ab():
def __init__(self,year):
self.year = year
print(self.__year)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。