-1

以下に示すコードの出力がわかりません。私は見ることを期待しています:

1
1

代わりに次を参照してください。

1
2

これは、Python 2.7.3 を使用した問題のコードです。

#!/usr/bin/python

class Test:
    __tBin = {'80':0, '70':0, '60':0, '50':0,'40':0,
              '30':0, '20':0, '10':0, '0':0,
              '-10':0, '-20':0, '-30':0, '-40':0}

    def __init__(self):
        self.__tests = {'i2c_transfer':self.__tBin}

    def foo(self):
        self.__tests['i2c_transfer']['80'] += 1
        print self.__tests['i2c_transfer']['80']

if __name__ == "__main__":
    testList = list()
    for i in range(1, 3):
        testList.append(Test())

    for i in testList:
        i.foo()

ありがとう

4

1 に答える 1

2

ディクショナリを作成するときは__tBin、実際にはインスタンスオブジェクトとしてではなく、クラスオブジェクトとして作成しています。したがって、その新しい値は、クラスの各インスタンス全体で持続します。したがって、次のように変更する場合:self.__tests['i2c_transfer']['80'] += 1

class Test:
    def __init__(self):
        self.__tBin = {'80':0, '70':0, '60':0, '50':0,'40':0,
                  '30':0, '20':0, '10':0, '0':0,
                  '-10':0, '-20':0, '-30':0, '-40':0}
        self.__tests = {'i2c_transfer':self.__tBin}

あなたが探しているものを手に入れる必要があります。self.__tBin は辞書をインスタンス オブジェクトとしてインスタンス化するため、クラスをインスタンス化するたびにリセットされます。

于 2013-07-14T19:35:59.173 に答える