2

.txt ファイルからテキストを読み取っていて、読み取ったデータの 1 つをクラス インスタンスの変数として使用する必要があります。

    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])")

繰り返しますが、これは非常にハックなソリューションであり、99% の確率で使用すべきではありません。でも、1%の完全異常シナリオのために、それができることを示したかったのです。

于 2013-07-08T00:32:30.977 に答える