2011-10-10 7 views
7

、それはweakrefはPythonで組み込み型をサポートしていないのはなぜですか? Pythonのweakref文書(<a href="http://docs.python.org/library/weakref.html" rel="noreferrer">http://docs.python.org/library/weakref.html</a>)で

組み込みのようなリストやdictのようなタイプのいくつかは、直接 弱参照をサポートしていませんが、私が思うに、サブクラス化

を通じてサポートを追加することができますことを言いますbig dictのweakrefを作成することは、いくつかの実際のケースでは役に立ちます。私はその実装の背景に何があるのだろうかと思います。

答えて

6

ほとんどの組み込み型は直接参照できません(str、int、float、list、dict、Noneなど)、サブクラス化では作成できないものもあります。 CPython)。

いくつかの組み込み型のweakrefsの基本的な実装に関する詳細は、this March-2005 python-list post by Raymond Hettingerにあります。

+0

ありがとうございました。今、私はタプルとstrが弱く参照できない理由を見ることができました。リストとディクテーションはどうですか?なぜこれらの型をサブクラス化してそれらの弱い参照を作成しなければならないのでしょうか? –

+0

2番目の段落で与えられたヒントが十分でない場合は、私はさらに詳しく説明するためにPythonの内部について十分に知りません。おそらく、あなたは[python-dev list](http://mail.python.org/mailman/listinfo/python-dev)でこの種の質問をする方がよいでしょう。私はpythonの開発者の1つは、あなたの質問への決定的な答えを与えることができると確信しています。 – ekhumoro

+0

今すぐ到着しました。投稿へのリンクが壊れています。私はhttp://mail.python.org/pipermail/python-list/2005-March/346301.htmlだと思います。 @WalterMundt。 –

0

私の推測によれば、ディクテーションとリストは弱点を実装するために内部的に使用されているため、ここでは鶏肉の状況があります。