コンポーネント オブジェクトのライブラリがあります。これらのオブジェクトの選択のインスタンス化を別のオブジェクトに含めたいと思います。しかし、リストを使用してコンテナー オブジェクトをインスタンス化するたびに、指定されたサブ オブジェクトを含むコンテナー オブジェクトが作成されるように、その選択をリストとして提供したいと考えています。
コンポーネント ライブラリが次のようになっているとします。
class ColorBlob(object):
...
def wipeItUp()
...
class RedBlob(ColorBlob):
...
def paintIt()
...
class YellowBlob(ColorBlob):
...
def paintIt()
...
class BlueBlob(ColorBlob):
...
def paintIt()
...
そして、私のコンテナオブジェクトは次のようになります:
class Pallet(object):
def __init__(self, colorList):
for color in colorList:
#Ok, here is where I get lost if I know the color I can do this:
Pallet.BlueBlob = blobLib.BlueBlob()
#But I don't, so I am trying to do something like this:
blobSpecs = getattr(blobLib, color)
blobSpecs.Obj = blobSpecs().returnObj(self.page) # with "returnObj" defined in the library as some other method
setattr(self, Pallet.blobName, blobSpecs) #and I am completely lost.
しかし、機能コードで本当にやりたいことは次のとおりです。
workingPallet=Pallet(['RedBlob', 'BlueBlob'])
workingPallet.RedBlob.paintIt()
コンテナー内のサブ オブジェクトをインスタンス化しようとすると、道に迷ってしまうことがわかっています。誰かが私の「getattr」と「setattr」のナンセンスを正すのを手伝ってくれますか?