私はobject()
の組み込み関数をどのように使用するのか把握しようとしています。引数はなく、すべてのPythonクラスに共通する型の「フィーチャーレスオブジェクト」を返します。また、すべてのPythonクラスに共通するすべてのメソッドを持っています。あなたはそれをプログラムする必要がない場合であってもジャック・スケリントン、WHAT. IS. THIS?object()ビルトインはいつ便利ですか?
答えて
を引用する
、object
は、目的を果たす:それは他のすべてのオブジェクトが導出される一般的なクラスです。これは、mro
(method resolution order)メソッドによってリストされた最後のクラスです。この概念には名前とオブジェクトが必要です。object
がこの目的に役立ちます。
object
の別の用途は、sentinelsを作成することです。
sentinel = object()
これは、多くの場合、マルチスレッドプログラミングで使用されている - signal a termination eventへ - キューを通過しました。キューハンドラがこれらの値を処理する引数として解釈する必要がある場合があるので、None
または他の値を送信したくない場合があります。プログラムの他の部分が生成しないような独自の価値が必要です。
このようにセンチネルを作成することで、通常のキュー値ではないことが確実なこのような一意のオブジェクトが提供されるため、特別なイベントの信号としてテストして使用することができます。クラスやインスタンス、関数などを作成するなどの可能性もありますが、これらのすべての代替案は大きく、リソースが重く、曖昧ではなくobject()
となります。
ドット(特に__setattr__
)を上書きする場合に最も便利です。再帰を中断することができます。例:
class SomeClass(object):
def __setattr__(self, name, value):
if name not in ('attr1', 'attr2', 'attr3', 'attr4'):
object.__setattr__(self, name, value)
else:
do_something_else()
Stack Exchangeへようこそ!ここであなたの[カーニバルイベントガイド](http://stackexchange.com/sites) – Aerovistae
私は、 'super()'の代わりに 'object'のメソッドを直接呼び出すことを避けるのが一般的でした。 1つの理由は、協調的な多重継承を可能にするということです。 'object'クラスは、' super() '呼び出しが最終的に到達する最終的な基本クラスであるため、もちろん関与しますが、明示的に名前を付ける必要はありません。 – Blckknght
@Blckknghtしかし、私は一般的にあなたに同意します。しかし、再帰を壊す場合は、通常、スーパークラスによって引き起こされた再帰を中断しようとしています。これは私が(一般的に)明示的にobjectを使用する1つのユースケースです。 – Tritium21
- 1. FlyweightとObject Poolのパターン:それぞれ便利なのはいつですか?
- 2. デーモンスレッドはいつ便利ですか?
- 3. __proto__はいつ便利ですか?
- 4. ブルームフィルタはいつ便利ですか?
- 5. --thunder-lockはいつ便利ですか?
- 6. オブジェクトインターフェイスはいつPHPで便利ですか?
- 7. Clojure core.async go-blocksはいつ便利ですか?
- 8. 二重強制はいつ便利ですか?
- 9. -e、--editableオプションはいつpipインストールに便利ですか?
- 10. sqliteのマニフェスト入力はいつ便利ですか?
- 11. @PrePassivateアノテーションと@PostActivateアノテーションはいつ便利ですか?
- 12. progressCallbackはなぜ便利ですか?
- 13. @OneToManyアノテーションは便利ですか?
- 14. カッサンドラのスーパーカラムは便利ですか?
- 15. git rmは便利なコマンドですか?
- 16. Android:arraylist <object>をarraylist <element>に変換する便利な方法は?
- 17. 利便-層::アルゴリズム
- 18. ExpandoObjectの便利な工場ですか?
- 19. Datastoreのサブストリングを見つけるのに便利ですか?
- 20. SqlBulkCopy - 小さなデータセット(つまり1000行)に便利ですか?
- 21. RefキーワードはDataTableに便利です
- 22. 丸いコーナーのAjax効果は便利ですか?
- 23. 便利な方法は
- 24. 便利な方法は
- 25. クラス継承を持つEventArgsですが、それは便利ですか?
- 26. Android XmlResourceParserの便利な使い方は?
- 27. アンドロイドデータバインディング:便利なエラーメッセージアンドロイドスタジオ2.1で
- 28. 便利な方法()
- 29. 便利なDelphiコードテンプレート
- 30. Swift便利なサブスクリプト
これは関数として使用することを意図していません。基本クラスとして使用することを意図しています。 – refi64
Python 3で?どうして?私はそれから何を得るでしょうか?クラスは自動的にこれらのメソッドを継承しますか? – Aerovistae
私はあなたが与えるドキュメンテーションのリンクの中で、どのように再帰的にそれ自身を指すハイパーリンクされたテキストを持っているのか面白いと思います。 – Shashank