Tell us what’s happening:
if hasattr(self, ‘_level’) and Employee._base_salaries[new_level] < Employee._base_salaries[self.level] :
raise ValueEror(“Cannot change to lower level.”)
he want to compare the new level and current one and then raise an error
he is sayin that your code raised an error but i couldnt find it where
Your code so far
class Employee:
_base_salaries = {
'trainee': 1000,
'junior': 2000,
'mid-level': 3000,
'senior': 4000,
}
def __init__(self, name, level):
self.name = name
self.level = level
self._salary = Employee._base_salaries[level]
def __str__(self):
return f'{self.name}: {self.level}'
def __repr__(self):
return f"Employee('{self.name}', '{self.level}')"
@property
def name(self):
return self._name
@name.setter
def name(self, new_name):
if not isinstance(new_name, str):
raise TypeError("'name' must be a string.")
self._name = new_name
print(f"'name' updated to '{self.name}'.")
@property
def level(self):
return self._level
@level.setter
def level(self, new_level):
if not isinstance(new_level, str):
raise TypeError("'level' must be a string.")
if new_level not in Employee._base_salaries:
raise ValueError(f"Invalid value '{new_level}' for 'level' attribute.")
if hasattr(self, '_level') and new_level == self.level:
raise ValueError(f"'{self.level}' is already the selected level.")
# User Editable Region
if hasattr(self, '_level') and Employee._base_salaries[new_level] < Employee._base_salaries[self.level] :
raise ValueEror("Cannot change to lower level.")
# User Editable Region
self._level = new_level
@property
def salary(self):
return self._salary
charlie_brown = Employee('Charlie Brown', 'trainee')
print(charlie_brown)
print(f'Base salary: ${charlie_brown.salary}')
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0
Challenge Information:
Build a Salary Tracker - Step 32