Python:在类中定义对象

2024-09-30 12:19:34 发布

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

对Python非常陌生,需要一些帮助。如何在类中引用成员? 我有两个csv文件。一个包含一系列零件和关联的物料ID。另一个是包含物料ID和有关该物料的一些信息的物料索引。你知道吗

我的意图是创建第三个文件,其中包含所有零件、它们的材质Id以及材质索引中存在的信息。你知道吗

我已经为材质索引创建了一个类,并尝试使用零件文件中的材质ID访问该类中的对象,但是,这不起作用,我不确定原因。感谢您的帮助:

class material():
    def __init__(self, name, ftu, e, nu):
        self.name = name
        self.ftu = ftu
        self.e = e
        self.nu = nu

def extract_FTU_Strain(input_file_parts,input_file_FTU,output_file):

    parts = {}
    materials = {}

    for aline in open(input_file_FTU, 'r'):
        comma_split = aline.strip().split(',')
        name = comma_split[1]
        ftu = comma_split[8]
        e = comma_split[9]
        nu = comma_split[7]



        try:
            materials[int(comma_split[0])] = material(comma_split[1],comma_split[8],comma_split[9],comma_split[7])
            #materials[comma_split[0]] = material(comma_split[1],comma_split[8],comma_split[9],comma_split[7])
        except:
            pass


    for i in open(input_file_parts, 'r'):
        semicolon_split = i.strip().split(';')


        material_id = semicolon_split[3]


        part = semicolon_split[0]
        part_id = semicolon_split[1]

        material_name = materials[material_id].name
        FTU = materials[material_id].ftu
        Stress = materials[material_id].e
        output.write(','.join([part,part_id,material_name,material_id,FTU,Stress]) + '\n') 












    output = open (output_file,'w')
    output.write('Part Title, Part Id, Material Id, FTU, e' + '\n')
    output.close()

import sys

input_file_parts = '/parttable.csv'
input_file_FTU = '/Material_Index.csv'
output_file = '/PYTHONTESTING123.csv'
extract_FTU_Strain(input_file_parts,input_file_FTU,output_file)

Tags: csvnameselfidinputoutput物料file
3条回答

我可能误解了你的问题,但是“我如何在类中引用成员?”您可以这样引用成员变量:

class Demonstration:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def printMembers(self):
        print self.a, self.b

因此在类中可以使用self.someVariable引用成员变量。你知道吗

如果要在类外访问它们:

myclass.myvariable

如果我还没有完全理解你的问题,或者你有一个特定的错误,我会很高兴地编辑答案。你知道吗

我不明白你有什么错误,你能回溯一下吗?无论如何,在赋值时您正在创建一个类实例。对于更优雅的编程,您可以简单地执行以下操作:

m = materials(name, ftu, e, nu)

通过这种方式,您可以访问如下实例变量:

m.name
m.ftu
...

试一下,除了->;传球很危险

因为您在注释中说您的错误在materials[material_id]中,所以请将material_id设置为整数,就像您创建对象时的整数一样。你知道吗

你是这样创造的

materials[int(comma_split[0])]=...

但后来调用它时没有将material_id转换为int。在for循环中调用它以写入输出之前,请执行此操作。你知道吗

material_id = int(material_id)

相关问题 更多 >

    热门问题