我不知道为什么我在python中收到此错误:
class Employee:
raise_amount = 15
num_of_emps = 0
def __init__(self,first,last,pay):
self.first = first
self.last = last
self.pay = pay
self.email = self.first+'.'+self.last+'@gmail.com'
Employee.num_of_emps +=1
def fullname(self):
return '{}{}'.format(self.first,self.last)
def apply_raise(self):
self.pay = int(self.pay * self.raise_amount)
@classmethod
def set_raise_amt(cls,amount):
cls.raise_amt=amount
emp1 = Employee('Tanush','Singh',60000)
emp2 = Employee('Manush','Singh',40000)
emp3 = Employee('Darshan','Dave',80000)
emp4 = Employee('Ravi','Teja',55000)
print(emp1.fullname())
print(emp1.pay)
print(Employee.num_of_emps)
emp1.apply_raise()
print(emp1.pay)
Employee.set_raise_amt(20)
print(emp1.raise_amt())
添加装饰器后我得到的错误:
Error: AttributeError: type object 'Employee' has no attribute 'set_raise_amt'
答案 0 :(得分:1)
在类中定义类方法,与任何其他方法相同。 (缩进)
答案 1 :(得分:0)
他们是您的代码中的缩进问题。函数set_raise_amt()在类之外,所以当你尝试使用Employee.set_raise_amt(30)访问它时,它会给你错误,因为set_raise_amt()不是类Employee的oart。 摘要:更正标识,它将起作用。