python - 无法在 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
,他应该在下一个函数中给我
解决方案
发生这种情况是因为您正在使用date.fromisoformat
但'01-01-2000'
不是这种格式。
以下将起作用:
import datetime
self.birthdate = datetime.datetime.strptime(birth, '%d-%m-%Y').date()
另一方面,你__repr__
也错了。确保转换self.number
和self.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()
.