猿问

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

我正在尝试为调度问题编写代码。今天我的代码有问题。我正在尝试将 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'


HUH函数
浏览 115回答 1
1回答

斯蒂芬大帝

当您在 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。
随时随地看视频慕课网APP

相关分类

Python
我要回答