繁体   English   中英

从列表向类添加属性

[英]Add attributes to class from list

我在 .txt 文件中有一个列表,其中包含有关汽车的数据。 名单是这样的:

Audi;2002;2500  
Peugeot;1967;2040  
Mercedes;2020;12000  

等等,总共有10个项目。

我需要以某种方式使用一个以品牌、型号和价格为属性的类,并从中列出一个列表。 因此,以Audi 2002 2500作为第一行, Peugeot 1967 2040作为第二行等的 10 个元素的列表。

我已经走了这么远:

file = open("doc.txt", "r")

class CAR():
   brand = ""
   model = 0
   price = 0      

def readdoc(file, listA)
   lines = 0
   for line in file:
     lines = lines + 1
     listA.append(line.strip())

这个函数给我一个列表格式的文件['Audi;2002;2500, '...']

但后来我迷失了该怎么做。 我应该“组合”列表和类CAR以某种方式制作一个列表,其中第一行是Audi 2002 2500 ,然后我需要对价格和模型进行一些简单的计算(例如乘法)。

对于每一行,您可以拆分; 并使用 3 个值构建CAR实例

class CAR:
    brand: str
    year: int
    price: int

    def __init__(self, brand, year, price):
        self.brand = brand
        self.year = year
        self.price = price


def readdoc(file):
    result = []
    with open(file, "r") as file:
        for line in file:
            br, ye, pr = line.strip().split(";")
            result.append(CAR(br, int(ye), int(pr)))
    return result


cars = readdoc("doc.txt")

正如@Bharel 所提到的,您也可以在没有__init__方法的情况下分配实例属性,而不是通常的做法(AFAIK),但基本上是一样的:

class Car:
    brand: str = ''
    year: int = 0
    price: int = 0


def readfile(file):
    result = []
    with open(file, "r") as file:
        for line in file:
            brand, year, price = line.strip().split(";")
            car = Car()
            car.brand = brand
            car.year = year
            car.price = price
            result.append(car)
    return result


cars = readfile("doc.txt")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM