Skip to main content
 首页 » 编程设计

python之为什么我会收到 TypeError

2025年05月04日9wayfarer

我的这个程序的目标是记录 4 条信息(员工编号、员工姓名、类次编号和小时工资率),然后显示它们。我需要在这个程序中使用类。

这是类代码:

class Employee(object): 
 
    def __init__(self, name, number): 
        self.__name = name 
        self.__number - number 
 
    def set_name(self, name): 
        self.__name = name 
 
    def set_number(self, number): 
        self.__number = number 
 
    def get_name(self): 
        return self.__name 
 
    def get_number(self): 
        return self.__number 
 
class ProductionWorker(Employee): 
 
    def __init__(self, name, number, 
                 shift, payRate): 
 
        Employee.__init__(self, name, number) 
 
        self.__shift = shift 
        self.__payRate = payRate 
 
    def set_shift(self, shift): 
        self.__shift = shift 
 
    def set_payRate(self, payRate): 
        self.__payRate = payRate 
 
    def get_shift(self): 
        return self.__shift 
 
    def get_payRate(self): 
        return self.__payRate 

下面是导入类代码并执行的代码:

import employee 
 
name = input('Name: ') 
number = input('Employee Number: ') 
shift = input('Shift number (Enter 1 for day and 2 for night): ') 
payRate = input('Hourly Pay Rate: ') 
 
myEmployee = employee.ProductionWorker(name, number, 
                           shift, payRate) 
 
print('--------------------') 
print('Employee Information') 
print('--------------------') 
print('Name:', myEmployee.get_name()) 
print('Employee Number:', myEmployee.get_number()) 
print('Customer number:', myEmployee.get_Shift()) 
print('Hourly Pay Rate:', myEmployee.get_payRate()) 

好的,固定类型:

myEmployee = employee.Employee(name, number, 
                           shift, payRate) 

到:

myEmployee = employee.ProductionWorker(name, number, 
                           shift, payRate) 

但现在我收到了这个错误:

Traceback (most recent call last): 
      File "C:/Users/Alex/Desktop/Programming Concepts/Homework 2/Chapter 13/Employee and Production Worker Class.py", line 9, in <module> 
        shift, payRate) 
      File "C:/Users/Alex/Desktop/Programming Concepts/Homework 2/Chapter 13\employee.py", line 24, in __init__ 
        Employee.__init__(self, name, number) 
      File "C:/Users/Alex/Desktop/Programming Concepts/Homework 2/Chapter 13\employee.py", line 5, in __init__ 
        self.__number - number 
    AttributeError: 'ProductionWorker' object has no attribute '_Employee__number' 

再次感谢您的帮助!

请您参考如下方法:

改变

myEmployee = employee.Employee(name, number, 
                       shift, payRate) 

到

myEmployee = employee.ProductionWorker(name, number, 
                       shift, payRate) 

还有一个建议:写getters和setters一般是frowned upon in Python .只需将成员公开并获取/设置它们:

myEmployee.name = "David" 
print myEmployee.name