2

我正在从 .txt 文件中读取文本,并且需要使用我读取的数据之一作为类实例的变量。

    class Sports:
        def __init__(self,players=0,location='',name=''):
            self.players = players
            self.location = location
            self.name = name
        def __str__(self):
            return  str(self.name) + "is played with " + str(self.players) + " players per team on a/an " + self.location + "."

    def makeList(filename):
        """
        filename -- string
        """
        sportsList = []
        myInputFile = open(filename,'r')
        for line in myInputFile:
            record = myInputFile.readline()
            datalist = record.split()
            sportsList.append(datalist[0])
            datalist[0] = Sports(int(datalist[1]),datalist[2],datalist[3])        
        myInputFile.close()
        print(football.players)

    makeList('num7.txt')

我需要将 datalist[0](它是一个字符串)转换为一个变量名(基本上没有引号),以便它可以用来创建该名称的实例。

4

1 回答 1

1

在开始之前,我必须说创建这样的变量是一种非常糟糕(并且有潜在危险)的编码实践。很多事情都可能出错,而且很容易忘记您自发创建的名称。此外,这样的代码很难维护。

但是,对于必须从字符串创建变量的千载难逢的情况,您可以执行以下操作:

>>> a="b"
>>> exec(a+"=1")
>>> print(b)
1
>>>

因此,在您的代码中,您可以执行以下操作:

exec(datalist[0]+"= Sports(int(datalist[1]),datalist[2],datalist[3])")

再一次,这是一个非常 hackish 的解决方案,不应该在 99% 的时间内使用。但是,为了 1% 完全不正常的场景,我想证明它是可以做到的。

于 2013-07-08T00:32:30.977 回答