AttributeError:类型对象'员工'没有属性' set_raise_amt'在python中

时间:2017-10-27 14:05:54

标签: python

我不知道为什么我在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'

2 个答案:

答案 0 :(得分:1)

在类中定义类方法,与任何其他方法相同。 (缩进)

答案 1 :(得分:0)

他们是您的代码中的缩进问题。函数set_raise_amt()在类之外,所以当你尝试使用Employee.set_raise_amt(30)访问它时,它会给你错误,因为set_raise_amt()不是类Employee的oart。 摘要:更正标识,它将起作用。