如何将用户输入的日期作为Python类的位置参数使用?
解决方案
以下是修正后满足需求的代码,实现了实例化无需手动传参、入职日期通过用户输入获取且格式不限的功能:
修改后的代码
import datetime class JoiningDetails: def __init__(self): # 初始化时获取用户名输入 self.name = input("Enter the name : ") # 先将入职日期置为空,后续通过getDoJ方法赋值 self.doj = None def output(self): # 输出员工的姓名与入职日期 print(f"Employee Name: {self.name}") if self.doj: print(f"Date of Joining: {self.doj}") else: print("Date of Joining has not been entered.") def getDoJ(self): # 获取用户输入的入职日期,支持任意格式 self.doj = input("Enter the date of Joining of the employee (any format):\t") # 按期望逻辑执行 emp = JoiningDetails() emp.getDoJ() emp.output()
关键改动说明
- 调整
__init__方法:移除了原有的位置参数要求,改为无参构造函数,实例化时直接调用JoiningDetails()即可。 - 替换类变量为实例属性:原代码中的
Name类变量会导致不同实例间数据混淆,改为self.name和self.doj实例属性,确保每个员工实例独立存储自身信息。 - 修正方法逻辑:
- 在
__init__中直接获取用户名输入,初始化入职日期为None。 getDoJ方法将用户输入的日期赋值给当前实例的self.doj属性,不再操作类变量。output方法输出当前实例的属性值,避免了原代码中引用变量的错误。
- 在
- 放宽日期格式限制:修改提示文案,允许用户输入任意格式的日期。
内容的提问来源于stack exchange,提问作者Jerin Joy
相关产品推荐
相关产品推荐

