我有一个带有year属性的类。
当我想要私有--这个属性时,似乎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的新手,所以提前感谢您的帮助。
发布于 2021-05-18 18:29:54
你从未真正修改过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顺便说一句,使用双前导下划线是个坏主意,除非你明确地想要名字损坏。
发布于 2021-05-18 18:28:56
您需要引用__init__中的设置器--而不是dunder私有属性。
class Ab():
def __init__(self, year):
self.year = year
print(self.__year)https://stackoverflow.com/questions/67591880
复制相似问题