Невозможно преобразовать строку в дату в Python - PullRequest
1 голос
/ 30 апреля 2020
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, он должен передать их мне в следующей функции

1 Ответ

0 голосов
/ 30 апреля 2020

Это происходит потому, что вы используете 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().

...