他のオブジェクトを保持するオブジェクトを作成し、それが保持しているオブジェクトごとにメソッドを呼び出す必要があります。最終目標は、プログラム用のスクリプトを生成することです。各オブジェクトには、printCommand()
で印刷可能なコマンドが含まれており、最終的にファイルに格納されます。私の元の解決策はこれでした:Pythonのリストクラスを拡張して内容に追加機能を実行しますか?
a = ObjectList()
a.appendObject(Object())
b = ObjectList()
b.appendObject(Object())
listOfObjects = [a, b]
for Object in listOfObjects:
Object.printCommand()
私はリスト変数を作成し、リストにオブジェクトを追加してから、コマンドを発行してループオーバーします。これはうまくいきますが、私は主にプログラミングを教えるためにこれをやっていますので、オブジェクトのリストにアイテムを追加、ポップするなどのコードを書くよりも洗練されたソリューションがあるかどうかを知りたいと思います。 list
はすでに、これらの機能が含まれているので、私が行うには、正しいものはlist
を延長するだろう考えていた:
class Object:
def __init__(self):
self.Command = "Script Command"
def printCommand(self):
print(self.Command)
class ObjectList(list):
def printCommand(self):
for Object in self.LISTCONTENTS:
Object.printCommand()
しかし、私は、独自の内容を反復処理するためにそれを言うだろう方法についての損失でいます。 self.LISTCONTENTS
に属しているものは? list
オブジェクトはそのコンテンツをどこに格納しますか?メソッドからどのようにアクセスしますか?
理解。 'for'ループだけを使用してください。 – delnan
@delnan:副作用として使用できない理由はありません。それが気になる場合、オプションにはジェネレータ式が含まれています。また、リスト作成以外のイテレータ関数を記述することもできます。いずれにしても、ここでの継承は単に不要です。 – Marcin
もちろん、それは可能ですが、それは慣用的ではありません。 'for'ループは正しい(広く受け入れられている)選択肢です - あなたが正しく述べたように、奇妙なOPが提案するものではありません。 – delnan