1

例による簡単な説明は、そのうちの 3 つを交換できない場合に役立ちます。

def __setitem__(self,**k):
        #self.val=k
        for key in k:
            self.val.setdefault(key,[]).extend(v for v in k[key])

上記のステップを setattr(obj,val[,can optional stuff come here??]) を使用して繰り返し実行できますか?

独自のスタイルとプライベート メソッドを作成しないのはなぜですか?

def _add(self,**k):
    if isinstance(self, CClass):
        for key in k:
            self.val.setdefault(key,[]).extend(v for v in k[key])

Q: すべてのクラスのスコープで、これらのプライベート メソッドにアクセスして使用できる場所はどこですか?

4

1 に答える 1

3

__setitem__1 つの項目の設定にのみ使用できます。

def __setitem__(self, key, value):
    self.val.setdefault(key,[]).append(value)

1 回の呼び出しで一度にすべてを拡張したい場合は、 iterable および/またはキーワード引数を取るdictのメソッドのようなものを作成できます。.update()

def update(self, it, **k):
    for key, val in it:
        self.val.setdefault(key,[]).extend(v for v in val)
    for key, val in k.iteritems():
        self.val.setdefault(key,[]).extend(v for v in val)
于 2013-05-14T11:51:03.170 に答える