我不确定为什么,但是我得到了一个名称错误雇员,该雇员尚未定义,但仍作为类名。我也收到一个追溯错误,但不确定为什么。希望对此有所帮助!
https://repl.it/repls/UnwieldyHorribleJavadoc
class Employee:
num_of_emps = 0;
raise_amt = 1.4;
def __init__(self,first,last,pay):
self.first = first
self.last = last
self.pay = pay
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_amt)
def set_raise_amt(cls, amount):
cls.raise_amt = amount
emp_1 = Employee('Corey', 'Smith', 5000)
emp_2 = Employee('Thomas', 'Hunt', 7000)
Employee.set_raise_amt(1.05)
print(Employee.raise_amt)
print(emp_1.raise_amt)
print(emp_2.raise_amt)
答案 0 :(得分:1)
这很简单。空格在Python上在语法上很重要。在类定义之后,您打算在类定义之后发生的事情(并尝试引用您正在定义的类)。
class Employee:
num_of_emps = 0;
raise_amt = 1.4;
def __init__(self,first,last,pay):
self.first = first
self.last = last
self.pay = pay
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_amt)
def set_raise_amt(cls, amount):
cls.raise_amt = amount
# <<<<< from here down, unindent your code
# <<<<< to cause it to execute AFTER the class definition
emp_1 = Employee('Corey', 'Smith', 5000)
emp_2 = Employee('Thomas', 'Hunt', 7000)
Employee.set_raise_amt(1.05)
print(Employee.raise_amt)
print(emp_1.raise_amt)
print(emp_2.raise_amt)
您的代码还有其他问题,但这可以回答您的问题。
答案 1 :(得分:0)
两个错误。
emp_1 = Employee('Corey', 'Smith', 5000)
及其后几行不属于该类,因此应加以注意。set_raise_amt(cls, amount)
应该是一个类方法,它需要适当的装饰器。您可以这样解决它:
class Employee:
num_of_emps = 0;
raise_amt = 1.4;
def __init__(self,first,last,pay):
self.first = first
self.last = last
self.pay = pay
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_amt)
@classmethod
def set_raise_amt(cls, amount):
cls.raise_amt = amount
emp_1 = Employee('Corey', 'Smith', 5000)
emp_2 = Employee('Thomas', 'Hunt', 7000)
Employee.set_raise_amt(1.05)
print(Employee.raise_amt)
print(emp_1.raise_amt)
print(emp_2.raise_amt)
不确定这是否真的是您想要的,但是运行时没有错误,并打印了1.05
3次。