【问题标题】:How to write in a csv file and know that a rental is active?如何写入 csv 文件并知道租赁处于活动状态?
【发布时间】:2020-11-29 12:43:22
【问题描述】:

我要做一个基本的汽车租赁程序。 我有一个类Aluguer 接收以下属性:

  1. 开始租用
  2. 用户昵称
  3. 车辆名称
  4. 按小时计费
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文件。在文件中注册后,该对象将从内存系统中删除。

我该怎么做?如何知道租借是否有效?

【问题讨论】:

  • 欢迎来到 StackOverflow。您的一处房产是否表明正在出租?或者可能是一个组合?
  • 如果在租约结束时删除对象,它存在的事实表明租约处于活动状态,不是吗?您如何跟踪您的车辆?
  • 当用户租车时,会创建一个Aluguer对象,它具有以下属性(时间开始、用户昵称、车辆名称和每小时价格)。

标签: python python-3.x class


【解决方案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 函数和一个更新它并将其写入 csv 的 return_rental 函数。因此,所有活动的都是rentals.rentals 列表中的。

**上面的代码没有功能和完整,只是指示符

【讨论】:

  • 但是,我的租车是由开始时间、用户昵称、车辆名称和每小时价格定义的。我将在哪里使用它?
  • 我更新了 start_rental 函数,所以它创建了新的出租
  • 在 def return_rental(self, rent) 中,我如何调用出租返回?在出租列表中,我可以同时拥有多个出租。
  • 如果我是你,我会在租金中添加一个 unique_id / booking_number 等并按名称引用它,让我将其添加到代码中
  • 查看更新,现在当你执行start_rental时会返回一个rental_id,当你想停止它时,你可以通过rental_id调用return_rental
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2011-10-07
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多