【问题标题】:Is it possible to create objects that are named after the values in a list?是否可以创建以列表中的值命名的对象?
【发布时间】:2020-07-02 10:22:50
【问题描述】:

我有一个文件名列表,A1 和 A2。

加载方法会创建保存在 csv 文件中的数据的临时列表。

是否可以根据传递的字符串(文件名)创建类的实例?

patients_list = ["A1", "A2"]

def load_patient(patients_list):

    patient_data = []

    for i in range(len(patients_list)):
        with open(patients_list[i]+".csv", "rt") as patient_file:        
            patient_file_reader = csv.reader(patient_file, delimiter=',')
            for row in patient_file_reader:
                patient_data.append(row)           

            patients_list[i] = patientClass(patient_data)  #can the string value be converted to an obj?

我的目标是拥有两个名为 A1 和 A2 的对象(每个都包含 csv 数据)。

这可能吗?我已经在互联网上搜索了解决方案,但没有找到解决方案。

【问题讨论】:

    标签: python arrays string csv


    【解决方案1】:

    是的,可以通过一些技巧来实现,例如在 globals() 中添加条目,不,你不希望这样。

    事实上,您甚至无法提出一种可能的语法,因为那样做起来并不容易。命名动态对象的常用且可靠的方法是使用字典:

    patient_obj = {}
    ...
    for i in range(...):
        ...
        patient_obj[patient_list[i]] = patientClass(patient_data)
    

    【讨论】:

    • 谢谢。因此,就您的解决方案而言,我将如何从字典中调用特定对象? patient_obj[1].get_something?
    • 这是一个普通的字典,所以你只需要使用它:patient_obj['A1'],或者patient_obj[name],其中name是来自patient_list的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2013-02-01
    • 2019-07-23
    • 2023-03-12
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多