将值从csv文件存储到类的属性

2024-04-27 00:07:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为一个调度问题编写代码。今天我的代码有问题。我试图将csv文件中的值存储到类的属性中。请帮助我理解它

import math
import csv

from math import radians, sin, cos, acos

class masterTrainer:        #class generated for the master trainers for the whole state
    with open("mtData.csv", "r") as f_input:
        csv_input = csv.DictReader(f_input)
        for row in csv_input:
            masterTrainer.name = row['Name']
            masterTrainer.location = row['Location']
            masterTrainer.subject = row['Subject']
            masterTrainer.latitude = row['latitude']
            masterTrainer.longitude = row['longitude']

    def distanceCalculator(latitude1,longitude1,latitude2,longitude2):
        slat = radians(latitude1)
        slon = radians(longitude1)
        elat = radians(latitude2)
        elon = radians(longitude2)
        dist = 6371.01 * acos(sin(slat)*sin(elat) + cos(slat)*cos(elat)*cos(slon - elon))
        print("The distance is %.2fkm." % dist)

class venue:
    with open("venueData.csv", "r") as f_input:
        csv_input = csv.DictReader(f_input)
        for row in csv_input:
            venue.name = row['Name']
            venue.latitude = row['latitude']
            venue.longitude = row['longitude']

print(masterTrainer.distanceCalculator(float(masterTrainer.latitude),float(masterTrainer.longitude),float(venue.latitude),float(venue.longitude)),masterTrainer.name, venue.name)

上面的代码显示了一个属性错误

AttributeError: type object 'masterTrainer' has no attribute 'latitude'

Tags: csv代码nameimportforinputsincos
1条回答
网友
1楼 · 发布于 2024-04-27 00:07:03

当您在python中声明一个类,并希望在该类的某个成员上存储值时,正确的方法如下:

class NameOfClass:
    def __init__(self, something, ...): #of course change "..." to the rest of arguments
        self.someAttribute = something

因此,首先定义一个名为__init_\_(self, ...):的方法并将with open(....) as ...:放在其中,然后将所有masterTrainer.whatever更改为self.whatever

相关问题 更多 >