#python #python-3.x #class
#python #python-3.x #класс
Вопрос:
Мне нужно создать базовую программу для аренды транспортных средств. У меня есть класс Aluguer
, который получает следующие атрибуты:
- начало аренды
- ник пользователя
- название транспортного средства
- почасовая стоимость аренды
import time
now = time.time()
class Aluguer:
def __init__(self, inicio, nickname, nome, preco_base):
self.__inicio = inicio
self.__nickname = nickname
self.__nome = nome
self.__preco_base = preco_base
@property
def inicio(self):
self.__inicio = now
return self.__inicio
@property
def nickname(self):
return self.__nickname
@property
def nome(self):
return self.__nome
@property
def preco_base(self):
return self.__preco_base
Чтобы рассчитать начальное время аренды, могу ли я просто сделать то, что я только что сделал в:
@property
def inicio(self):
self.__inicio = now
return self.__inicio
Затем я должен выполнить метод обновления, который добавляет или обновляет (если они уже существуют) два новых атрибута Aluguer
объекта: прошедшее время и цена.
Я написал следующее:
def update(self):
tempo_fim = time.time()
elapsed_seconds = tempo_fim - self.__inicio
price = self.__preco_base
valor = (elapsed_seconds / 3600) * price
Когда пользователь вернет транспортное средство, update
метод будет выполнен, и информация будет записана в файл csv. После регистрации в файле объект будет удален из системы памяти.
Как я могу это сделать и как я могу узнать, активна ли аренда?
Комментарии:
1. Добро пожаловать в StackOverflow. Указывает ли одно из ваших свойств, что аренда активна? Или, может быть, комбинация?
2. Если вы удаляете объект по окончании аренды, тот факт, что он существует, указывает на то, что аренда активна, не так ли? Как вы отслеживаете свои транспортные средства?
3. Когда пользователь арендует транспортное средство, создается объект Aluguer со следующими атрибутами (время начала, ник пользователя, название транспортного средства и цена за час).
Ответ №1:
Поскольку это выглядит как длительный процесс, я бы использовал структуру как таковую:
import csv
import Aluguer
class Rentals:
def __init__(self):
self.rentals = {}
def start_rental(self, inicio, nickname, nome, preco_base):
new_rental = Aluguer(inicio, nickname, nome, preco_base, rental_id)
rental_id = str(id(new_rental))
self.rentals[rental_id] = new_rental
rental.inicio()
return rental_id
def return_rental(self, rental_id):
rental = self.rentals[rental_id]
rental.update()
file_name = "Dummy.csv"
with open(file_name, 'w') as f:
writer = csv.DictWriter(f, fieldnames=rental.__dict__.keys())
writer.writeheader()
for data in rental.__dict__:
writer.writerow(data)
Вы определяете класс rentals
, который содержит все активные аренды, с start_rental
помощью функции, которая определяет аренду и инициализирует ее, и return_rental
функции, которая обновляет ее и записывает в csv. Поэтому все активные — это те, которые есть в rentals.rentals
списке.
** Приведенный выше код не является функциональным и полным, просто индикатор
Комментарии:
1. Но моя аренда определяется временем начала, ником пользователя, названием транспортного средства и ценой за час. Где я собираюсь это использовать?
2. Я обновил функцию start_rental, поэтому она создает новую аренду
3. В def return_rental(self, rental) как мне вызвать rental для возврата? В списке аренды у меня может быть несколько арендных ставок одновременно.
4. На вашем месте я бы добавил unique_id / booking_number и т. Д. для аренды и ссылки на нее по имени, позвольте мне добавить его в код
5. Смотрите обновление, теперь при выполнении
start_rental
arental_id
возвращается, и когда вы хотите его остановить, выreturn_rental
вызываетеrental_id