在python中处理类继承时,出现str对象不可调用的错误。

问题描述 投票:0回答:1

这类问题在本网站上已经问过很多次,但不是在这种情况下。让我给你一些背景。我刚刚学习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() 但我至今都没有成功。先谢谢您了。

python
1个回答
0
投票

你不需要在 emp._full_name. 由于它不是一个函数或对象,所以没有什么可调用的。检查它的类型的一个好方法是运行 type(emp._full_name). 这应该显示它是一个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.