15
A
答えて
19
を定義しているクラスでは、インスタンスごとに変数がありません。は、インスタンスへの弱い参照をサポートしていません。弱い参照のサポートが必要な場合は、宣言の文字列のシーケンスに
__weakref__
を追加します。
あなたは__slots__
に__weakref__
を追加する場合は、あなたのコードは動作します:
>>> from weakref import ref
>>>
>>> class Klass(object):
>>> __slots__ = ['foo', '__weakref__']
>>> def __init__(self):
>>> self.foo = 'bar'
>>> k = Klass()
>>> k
=> <__main__.Klass object at ...>
>>> r = ref(k)
>>> r
=> <weakref at ...; to 'Klass' at ...>
4
あなたはスロットのリストに__weakref__
を追加する必要があります。それは__slots__
quirksの1つです。 2.3より前のバージョンでも、これはうまくいきませんでしたが、幸いにもあなたのバージョンはそれほど古いものではありません。
関連する問題
- 1. Python3 weakref WeakMethodとスレッドセーフ
- 2. pythonのweakrefリスト
- 3. super()とexplicit(Cl、self)の違いは(__slots__とattrsの場合)
- 4. __slots__のサブクラスをjsonに変換する
- 5. SQLAlchemyモデルで__slots__を使用する
- 6. Pythonのweakrefコールバックと__del__の実行順序
- 7. __slots__は汎用クラスのクラス変数と競合します
- 8. `weakref`コールバックが` __del__`を置き換えることができますか?
- 9. PEP 412は__slots__を冗長にしますか?
- 10. wxPython + weakref proxy =閉じるwx.Frameは返されません。
- 11. これはweakrefの正しい使い方ですか?
- 12. 派生クラスのすべての__slots__を取得
- 13. python: `__slots__`に`__dict__`を追加する点は何ですか?
- 14. なぜPythonの__slots__はメモリを保存しませんか?
- 15. __setattr __()は__slots__を持つクラスで定義できますか?
- 16. 属性の初期化で `__slots__`を使うには?
- 17. weakrefはこのバインドされたメソッドでは機能しません。
- 18. 私は__slots__の作業を行う方法がわかりません
- 19. Pythonオブジェクトには参照元はありませんが、weakrefを介してアクセスできますか?
- 20. 2つのオブジェクト間の循環参照にweakrefを使用する必要がありますか?
- 21. 弱参照はオブジェクトを指していませんが、weakrefはNoneに評価できませんか?
- 22. 私のクラスで__slots__を使ってサイズを変えないのはなぜですか?
- 23. weakrefはPythonで組み込み型をサポートしていないのはなぜですか? Pythonのweakref文書(<a href="http://docs.python.org/library/weakref.html" rel="noreferrer">http://docs.python.org/library/weakref.html</a>)で
- 24. メモリリークが<code>weakref</code>を使用するデコレータ<em>ない</em>を変更しようとして一時的
- 25. 他の唯一のリファレンスを削除した後にWeakSetが空でないのはなぜですか?
- 26. WeakReferenceがKotlinで機能しない
- 27. 手作業によるGCC収集後でもウィークリファレンスがREPLで削除されない
- 28. PythonでPyCharmに優しい値オブジェクトを定義する方法は?
- 29. カスタム__dir __()は、アルファベット順にソートされた属性のリストを返します
- 30. のPython、override__getstateの__()と__setstateの__()