I am in the process of learning python. Specifically, it is about the get and set methods in the class. Question that popped up in my head is: What is the difference (apart from the call itself) between the @property and @ var.setter decorator and the regular setter. Example:
class Car:
def __init__(self, mark):
self.mark = mark
self.__year = None
def get_year(self):
return self.__year
def set_year(self, y):
if y<2000:
self.__year = "Old"
else:
self.__year = "New"
audi = Car("Audi")
audi.set_year(2005)
print(audi.get_year())
vs
class Car:
def __init__(self, mark):
self.mark = mark
self.__year = None
@property
def year(self):
return self.__year
@year.setter
def year(self, y):
if y<2000:
self.__year = "Old"
else:
self.__year = "New"
audi = Car("Audi")
audi.year = 2005
print(audi.year)
the only difference is calling? Is there anything else in it?
Thank you for explain