我正在尝试从对象文件创建类实例:
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
有什么想法? 感谢
答案 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