本文教你如何定义一个封装员工信息(姓名、id、部门、职位)的 employee 类,并通过独立测试文件创建多个实例来格式化输出数据,同时解决常见模块导入错误和语法问题。
本文教你如何定义一个封装员工信息(姓名、id、部门、职位)的 employee 类,并通过独立测试文件创建多个实例来格式化输出数据,同时解决常见模块导入错误和语法问题。
要使用 Python 实现员工信息的结构化管理与清晰输出,需遵循面向对象设计原则:将数据(属性)与行为(方法)封装在 Employee 类中,并通过单独的测试脚本实例化和展示对象。以下是完整、可运行的实现方案。
✅ 正确的 employee.py 文件内容
class Employee:
def __init__(self, name, id_num, dep, title):
self.__name = name
self.__id = id_num
self.__dep = dep
self.__title = title
# 提供 setter 方法(虽未在测试中调用,但按题意保留)
def set_id(self, id_num):
self.__id = id_num
def set_dep(self, dep):
self.__dep = dep
def set_title(self, title):
self.__title = title
def __str__(self):
# 使用 \t 实现制表符对齐;注意:self.__name 等属性名拼写必须准确(原代码中误写为 self__name)
return f"{self.__name}\t{self.__id}\t{self.__dep}\t{self.__title}"⚠️ 关键修正说明:
- 类定义后必须加冒号 :(class Employee:);
- __str__ 中的属性引用必须带双下划线(如 self.__name),原代码漏掉点号导致 NameError;
- 制表符为 \t,不是 /t(这是常见转义符误写);
- 所有方法需正确缩进,Python 对缩进敏感。
✅ 正确的 employee_test.py 文件内容
from employee import Employee
def main():
# 创建三个 Employee 实例
susan = Employee("Susan Meyers", "47899", "Accounting", "Vice President")
mark = Employee("Mark Jones", "39119", "IT", "Programmer")
joy = Employee("Joy Rogers", "81774", "Manufacturing", "Engineer")
# 直接 print 调用 __str__ 方法,自动格式化输出
print(susan)
print(mark)
print(joy)
if __name__ == "__main__":
main()✅ 最佳实践补充:
- 添加 if __name__ == "__main__": 防止模块被导入时意外执行;
- 变量名采用小写字母+下划线(如 susan)更符合 PEP 8 规范,避免使用大驼峰(如 Susan)作为变量名(易与类名混淆);
- 确保 employee.py 和 employee_test.py 位于同一目录下,否则 import 会触发 ModuleNotFoundError —— 这是报错中最常见的根本原因。
? 运行效果(终端输出)
Susan Meyers 47899 Accounting Vice President Mark Jones 39119 IT Programmer Joy Rogers 81774 Manufacturing Engineer
如需进一步增强实用性,可扩展 Employee 类添加 getter 方法(如 get_name())、支持 CSV 导出、或使用 @property 装饰器替代私有属性访问限制。但当前实现已完全满足题目要求:结构清晰、语法正确、输出可读、模块调用无误。
立即学习“Python免费学习笔记(深入)”;



















