将列表分配给python对象

时间:2016-04-25 12:11:52

标签: python oop

我有一个要读取的文件,如下所示:

  0.0017224129699045  0.0006501069699993  0.9998957781816742
  0.1990018751753198  0.0008531972943402  0.0001365339587167
  0.3985306090674854  0.0004447825187626  0.9994454487115476
  0.5997635306734566  0.0007689624538330  0.0001887505556155
  0.8014083650919446  0.0007156269856168  0.9995317401042954
  0.1999636426048639  0.1995427045657650  0.0017775030876521

每列显示原子的坐标。我想为在python中定义为对象的原子指定坐标:

# The parser
#!/usr/bin/python3
def get_pos():
    with open("CONTCAR", "r") as finp:
        for line in finp:
            for _ in range(6):
                sdata = finp.readline()
                tpos.append(sdata.split())

    print(tpos)

调用函数是:

#!/usr/bin/python3
import parsepos

class Atom:
    count = 0

    def __init__(self, name, pos=[], vel=[]):
        self.name = name
        self.pos = pos
        self.vel = vel
        Atom.count += 1
        # self.parse = parsepos.get_pos()
parsepos.get_pos()

mcwe,在list tpos中显示正确列出的原子,但我不知道如何将这些值分配给atom.pos

请帮助。

1 个答案:

答案 0 :(得分:1)

默认情况下,Python中的函数返回None。只需让get_pos()返回tpos

def get_pos():
    with open("CONTCAR", "r") as finp:
        for line in finp:
            for _ in range(6):
                sdata = finp.readline()
                tpos.append(sdata.split())

    # print(tpos)
    return tpos

然后像这样:

Atom.pos = parsepos.get_pos()
print(Atom.pos)

希望这有帮助!