[解決済み] Pythonの__weakref__とは一体何ですか?
質問
意外なことに
__weakref__
. 弱い参照は説明されています
ここで
.
__weakref__
のドキュメントでも少し触れています。
__slots__
. しかし、私は
__weakref__
自体については何も見つかりませんでした。
具体的にはどのような
__weakref__
?
- フラグとして機能する単なるメンバでしょうか。もし存在すれば、そのオブジェクトは弱く参照されるかもしれません。
- それとも、希望の動作を得るためにオーバーライド/割り当てが可能な関数/変数ですか?どのように?
どのように解決するのですか?
__weakref__
は、現在のオブジェクトへのすべての弱い参照を参照する不透明なオブジェクトに過ぎません。実際のところ、これは
weakref
(または時々
weakproxy
) は、オブジェクトへの弱い参照であると同時に、そのオブジェクトのすべての弱い参照への二重リンクリストの一部でもあります。
これは、ガベージコレクタがその参照先が収集されたことを弱参照に通知し、その基礎となるポインタへのアクセスをもう許可しないようにするための実装の詳細に過ぎません。
弱い参照は、それが参照するオブジェクトの参照カウントをチェックすることに頼ることはできません。なぜなら、そのメモリは再利用され、現在別のオブジェクトによって使用されている可能性があるからです。最良のシナリオは VM がクラッシュすることですが、最悪の場合、弱い参照は本来参照していなかったオブジェクトへのアクセスを許可することになります。これが、ガベージコレクタが弱参照にその参照はもはや有効でないことを通知しなければならない理由です。
参照 weakrefobject.h を参照して下さい。また、実装の詳細は である。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スロットの使い方__?
-
[解決済み】Pythonでimmutableオブジェクトを作るには?
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?