-1

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

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

有什么想法吗?谢谢

4

1 回答 1

1

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

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
于 2013-10-15T19:06:35.073 回答