-1

PHP-GTK アプリケーションを Python に変換するには、PHP 配列と可能な限り密接に機能する辞書が必要です。検索と試行の後、dict を myDict() クラスにサブクラス化し、この作業を行う機能である最初の重要な機能を実装しました。

dict1 = myDict()
dict1[foo1][foo2][foo3] = 1

これは myDict() クラスに実装されています。

class myDict(dict) :

    def __missing__(self, arg) :

        self.__setitem__(arg, myDict())
        return self.__getitem__(arg)

今、問題があります。PHP で未定義のキーを取得しようとすると、Null が返されます (Python では None に相当します)。標準の Python dict では、エラーが返されます。私のmyDict辞書では、残念ながら空のmyDictを返します

toto2 = myDict()
x = toto2["a"]["b"]
print x

{} このコードに相当する PHP は Null を返すため、x の値として None を返す上記の Python コードが必要です。

None を返すというアイデアはまだ見つかりません。が None を返す場合__missing__、2 行目でエラーが発生するためです: NoneType is unsubscriptable.

誰かがこれを解決するアイデアを持っているなら、私は感謝します.PHPのこの「魔法」をエミュレートするための解決策を探している月があります.

4

1 に答える 1

1

キーが にないときに myDictreturnできるとします。次に、検討します。NonemyDicttoto2["a"]["b"]

Python は最初に を評価しtoto2["a"]ます。"a"が含まれていない場合は、 None を返しますtoto2toto2["a"]次に、Python は を評価None["b"]して発生させTypeErrorます。

そのため、Python では目的の動作を行うことはできません。

于 2012-11-29T19:49:36.207 に答える