2017-02-24 15 views
0

クラスを定義するときに、さまざまな値(IPアドレス、名前、モデルなど)を渡すクラスがあります。コールクラス関数クラスオブジェクトのリストを使用するPython

同時に、これらのクラスをリストに入れて、デバイスの数を簡単に拡張できます。私はクラスから別の関数を呼び出せるようにしたい。

例えば

私のクラスはやや

class foo: 
    def __init__(self, IP, Name, Model, Series): 
     #Do stuff 
    def getstate(): 
     #Do more stuff and return a value 

マイリストのように見えますが、多少

Devices = {} #I fill this up with the list of all devices elseware 
ClassDevices = [] 

for key in Devices: 
     print 'List is empty, store objects' 
     ClassDevices.append(Foo(Devices[key]["IP"], Devices[key], Devices[key]["Model"], Devices[key]["Series"])) 

のように見える以上が動作しているようですが、今、私はステータスを取得できるようにしたいです各デバイスの私は、次の

print ClassDevices[0].getstate() 

を試してみましたそして私は私が私がやろうとしていますが完全

可能である場合にもわからないので、私は、Pythonに新たなんだエラー

TypeError: object cannot be interpreted as an index 

を取得しますコード(それはおそらくより簡単です)を見ることができますhere

+2

'foo'または' Foo'? –

+1

私はあなたが全体の画像を表示しているとは思わない、何かがここで欠けている。コード全体を貼り付けることはできますか? – bosnjak

+2

full stacktrace please.' [0] 'できません。 –

答えて

0

あなたがやろうとしていることはかなりシンプルです。主な問題は、あなたが正しく反復していないことです(あなたがPythonを初めて使うためです)。

はあなたのようなコードがあります。この場合x

for x in SmartHome.SenseMeDevices: 
    print(SmartHome.SenseMeDevices[x].getstate()) 

すでにあなたのリストの要素ではなく、要素のインデックスです。

あなたは、代わりにこのように繰り返す必要があります。

for x in SmartHome.SenseMeDevices: 
    print(x.getstate()) 
+0

これは完全に機能しました!私はそれがとてもシンプルだったと信じていませんが、私は自分でこれを得たことはないでしょう。 – Trogdor

関連する問題