在Python中从文件创建类实例

时间:2013-10-15 18:57:38

标签: python file class

我正在尝试从对象文件创建类实例:

MyCube,2,3,4
FancyCube,5,3,3
AngryCube,5,5,5

其中第一列是实例的名称。

class cube(object):
   def __init__( self, X, Y, Z):
      self.X = X
      self.Y = Y
      self.Z = Z


def filetest():
   filename = 'CubeDB.txt'
   ins = open(filename, 'r')

   for line in ins:
       name, X, Y, Z = line.rstrip('\n').split(',')
       vars()[name] = cube(X, Y, Z)

filetest()
print MyCube.X

我一直在讨厌这个问题,上面是我能找到的最接近的实现,但是我收到了这个错误:

File "classtest.py", line 21, in filetest
    vars()[name] = cube(X, Y, Z)
TypeError: 'str' object is not callable

有什么想法? 感谢

1 个答案:

答案 0 :(得分:1)

正如评论中所建议的那样,修改vars()可能不是最佳方法。我建议创建一个字典并使用多维数据集的名称作为键。此外,您可以直接使用csv module

import csv

class Cube(object):
    def __init__(self, X, Y, Z):
        self.X = X
        self.Y = Y
        self.Z = Z

def filetest():
    filename = 'CubeDB.txt'
    cubes = {}
    with open(filename, 'r') as csvfile:
        for row in csv.reader(csvfile):
            cubes[row[0]] = Cube(*row[1:])
    return cubes

cubes = filetest()
print cubes['MyCube'].X