这类问题在本网站上已经问过很多次,但不是在这种情况下。让我给你一些背景。我刚刚学习python3中的类继承和OOP。我正在做一个小的Employee超级类,有几个子类。开发者和经理)。经理可以有一个来自Employee类的员工列表(也可以是开发人员甚至其他经理,只要他们在Employee类下)。这一切都很顺利,直到我尝试了一个print_emp
语句。这是我为经理类编写的代码。
class Manager(Employee):
def __init__(self, first_name, last_name, pay, employees=None):
super().__init__(first_name, last_name, pay)
if employees == None:
self.employees = []
else:
self.employees = employees
def add_employee(self, Employee):
if Employee not in self.employees:
self.employees.append(Employee)
def del_employee(self, Employee):
if Employee in self.employees:
self.employees.remove(Employee)
def print_emp(self):
for emp in self.employees:
name = emp._full_name()
print(name)
这是我的雇员类的代码
class Employee:
def __init__(self, first_name, last_name, pay):
self.pay = pay
self.first_name = first_name
self.last_name = last_name
self.email = first_name + '.' + last_name + '@email.com'
self.full_name = first_name + ' ' + last_name
def pay_raise(self, raisepercent):
self.pay = self.pay * (raisepercent / 100)
错误是 "str对象不可调用",在这几行中:
name = emp._full_name()
print(name)
我试着用正常的方法来修复它,如 emp._full_name()
而不是 emp.full_name()
但我至今都没有成功。先谢谢您了。
你不需要在 emp._full_name
. 由于它不是一个函数或对象,所以没有什么可调用的。检查它的类型的一个好方法是运行 type(emp._full_name)
. 这应该显示它是一个字符串。