Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2021 13:56:02

Typical_beginer
Зарегистрирован: 2020-12-29
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление даты с клавиатуры,как атрибут класса

Требуется ввести 2 даты в формате,например 11.12.1990
В стандартном вводе с клавиатуры datetime такой формат(гггг-мм-дд),с помощьюstrftime(“%m/%d/%Y”) как я понял можно дату вывести таком формате 11.12.1990.

Но как правильно ввести дату с клавиатуры в объект класса?
Отрывок проблемного кода:

 import datetime
class Bookorder:
 
def __init__(self,surnm,dateorder,datetakeorder):
                """Инициализация атрибутов класса - фамилия,дата заказа книги,дата выдачи книги"""
                self.surn = input('Фамилия заказчика книг: ')
                self.dateorder = input('Дата заказа книги(дд-мм-гггг): ')
                self.dateorder=dateorder.split('.')
                self.datetakeorder= input('Дата выдачи книги(дд-мм-гггг): ')
                self.datetakeorder=datetakeorder.split('.')

Офлайн

#2 Янв. 9, 2021 16:07:44

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Добавление даты с клавиатуры,как атрибут класса

 import datetime
class Bookorder:
    """Инициализация атрибутов класса -
        дата заказа книги,дата выдачи книги"""
    cout = 0
    dateorder = input(
        'Дата заказа книги(дд-мм-гггг): ').split('.')
    datetakeorder= input(
        'Дата выдачи книги(дд-мм-гггг): ').split('.')
    def __init__(self):
        """Инициализация атрибутов экземпляра - фамилия"""
        self.surn = input('Фамилия заказчика книг: ')
        Bookorder.cout += 1
#создаем 10 экземпляров класса обращаем внимание на счетчик (cout)
exampl = []
for i in range(10):
    qwerty = Bookorder()
    exampl.append(qwerty)
    print(qwerty.cout)
#текущее состояние count во всех экземплярах
for i in exampl:
        print(i.cout)
https://pythononline.ru/osnovy/atribut-klassa-ekzemplyara-python



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Янв. 9, 2021 16:23:35)

Офлайн

#3 Янв. 9, 2021 22:16:23

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  121  -
Профиль   Отправить e-mail  

Добавление даты с клавиатуры,как атрибут класса

У вас есть класс

 class Bookorder
,у него есть атрибуты без которых он не был бы этим классом
 self.surnm
self.dateorder
self.datetakeorder

чтобы создать экземпляр этого класса,нужно задать этим атрибутам значения,характерные для создаваемого экземпляра.

Для этого делаем инициализацию
 def __init__(self, surnm, dateorder, datetakeorder):
"""Инициализация атрибутов класса - фамилия,дата заказа книги,дата выдачи книги"""
    self.surnm = surnm
    self.dateorder = dateorder
    self.datetakeorder = datetakeorder

Нужно четко понимать,каким типом данных будут переменные

Результат работы этого класса - это создание сущности,которая хранит в себе свои уникальные переменные этих атрибутов.
Например
 book_order_1 = Bookorder("Ебанько",'12.12.2019','20.02.2020')
print(book_order_1.surnm) # Ебанько
print(book_order_1.dateorder) #12.12.2019
Typical_beginer
Но как правильно ввести дату с клавиатуры в объект класса?
Получением данных с консоли занимаются другие системы,результат которых-данные в нужном виде,
к примеру
 def get_surname():
	my_str = input('Фамилия заказчика книг: ')
	"""приводим строковые данные под нужный тип,проверяем корректность и тд и тп"""
	return my_str # возвращаем подготовленную переменную
def get_dateorder():
	 date = input('Дата заказа книги(дд-мм-гггг): ')
	 """приводим строковые данные под нужный тип,проверяем корректность и тд и тп"""
	 return date # возвращаем
def get_datetakeorder():
	date = input('Дата выдачи книги(дд-мм-гггг): ')
	"""приводим строковые данные под нужный тип,проверяем корректность и тд и тп"""
	return date  # возвращаем
book_order_1 = Bookorder(get_surname(),get_dateorder(),get_datetakeorder())
print(book_order_1.surnm) # данные которая вернула функция get_surname()
print(book_order_1.dateorder) #
print(book_order_1.datetakeorder)#



Офлайн

#4 Янв. 10, 2021 10:38:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Добавление даты с клавиатуры,как атрибут класса

Если я правильно понял то тут две проблемы.

Первая как в программе хранить дату. Я думаю что везде в программе должны быть datetime.datetime() обекты

Вторая как считать с клавиатуры данные.

 fmt="%m/%d/%Y"
line = input(f"enter datetime in format {fmt}") # считать строку
t=datetime.datetime.strptime(line,fmt)  # воспользоваться методом для перевода строки во внутреннее представление времени



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version