首页 > 解决方案 > 无法在 Python 中将字符串转换为日期

问题描述

from datetime import date


class student:
     def __init__ (self, firstname, lastname, number, birth):
         self.firstname = str(firstname)
         self.lastname = str(lastname)
         self.number = int(number)
         self.birthdate = date.fromisoformat(birth)
         self.note = int(0)
         self.kurs = str()

     def __repr__ (self):
         return '{firstname:' + str (self.firstname) + ', lastname:' \
                + str (self.lastname) + ',' 'number:' \
                + self.number + ',' 'birth:' \
                + self.birthdate + '}'

     def grade_entry (self):
         input ("coursename:")
         input ("coursegrade:")


     def put_entry(self):
         print(student.grade_entry())



o = student ('My', 'Name', '123456', '01-01-2000')
print(o)
student.grade_entry()
student.put_entry()

以下是错误的,我无法解决,希望有人能帮助我。

AttributeError: type object 'datetime.date' has no attribute 'fromisoformat'

顺便说一句,你能告诉我一些事情。所以如果我在 def 中写了几个课程名称grade_entry,他应该在下一个函数中给我

标签: pythondate

解决方案


发生这种情况是因为您正在使用date.fromisoformat'01-01-2000'不是这种格式。


以下将起作用:

import datetime


self.birthdate = datetime.datetime.strptime(birth, '%d-%m-%Y').date()

另一方面,你__repr__也错了。确保转换self.numberself.birthdate(即str(self.number)str(self.birthdate)):

 def __repr__ (self):
     return '{firstname:' + str(self.firstname) + ', lastname:' \
            + str(self.lastname) + ',' 'number:' \
            + str(self.number) + ',' 'birth:' \
            + str(self.birthdate) + '}'

最后,您错误地调用了类而不是创建的实例。

代替

o = student ('My', 'Name', '123456', '01-01-2000')
print(o)
student.grade_entry()
student.put_entry()

你应该使用:

o = student ('My', 'Name', '123456', '01-01-2000')
print(o)
o.grade_entry()
o.put_entry()

此外,put_entry应该调用self.grade_entry()而不是student.grade_entry().


推荐阅读