I had an issue with my setter methods not working when the if conditions were met, and I was not sure why (I ended up fixing it, but my question is WHY this fixed it). Here is my code:
class Employee:
def __init__(self, name, employee_id):
self.__name = name
self.__employee_id = employee_id
#Set property for name
@property
def name(self):
return self.__name.capitalize()
#Set setter for name
@name.setter
def name(self, name):
if name.isalpha():
self.__name = name.capitalize()
else:
self.__name = 'Unknown'
#Set property for employeeid
@property
def employee_id(self):
return f"{self.__employee_id:0>4}"
#Set setter for employeeid
@employee_id.setter
def employee_id(self, employee_id):
if len(employee_id) == 0:
self.__employee_id = '9999'
else:
self.__employee_id = employee_id
#Str format to print out name
def __str__(self):
return f"<{self.employee_id}>: {self.name}"
What I did to fix my issue was remove the __ from name and employee_id ONLY in the init method, and the if conditions in my setters worked (printed out "<9999>: Unknown", when it kept printing out "<0000>: " before). Can anyone explain to me why this worked?
Thank you!