私はPythonをオンラインでDive Into Pythonと読んで学習しています。第2章では、テスト目的で__name__
属性を使用できることが分かりました。誰でもこの属性の他の用途について知っていますか? ?ありがとう__name__属性のその他の使用
3
A
答えて
3
私はかつてコマンドラインスクリプトファイルのデコレータを持っていました。
デコレータは次のように使用された:
@command
def someFunc():
# code goes here
デコレータは、このような何かやっていた:
commands = {}
def command(func)
commands[func.__name__] = func
return func
をそして私はこのような何か行うことができます:
commandName = raw_input()
commands[commandName]();
以前にデコレータでラベルが付けられていた場合は、コンソールからコマンド名を読み込み、それを呼び出すことになりますinput
のように危険な呼び出しが可能です)。
(私のコードでは名前は、コマンドライン引数、ないraw_input
から取られました。)
これは、簡単に、私は自分の名前を介してアクセスするコマンドを提供してみましょう。これは用途の1つです。一般的なルールは"関数定義の概念に独自のセマンティクスを追加する場合に便利です"。一般的なデコレータにも同じことが言えます。
(ところで、私の知る限り、__
で始まる識別子はPythonで民間ことになっているので、func.__name__
を使用するより正確であるfunc.func_name
フィールド、あります - ちょうどマイナーなディテールが)
1
それは非常に便利ですデバッグ時。フレームワーク(またはその他の非常に汎用的なソフトウェア)を書くときは、の名前を使って簡単にデバッグして、何が流れているのかを知ることができます。
関連する問題
- 1. UIImageとその他の属性を使用してカスタムイメージを作成する
- 2. なぜpythonインスタンスに__name__属性がないのですか?
- 3. その他の情報HTML要素の属性
- 4. 他の属性のコード内からの属性のテスト
- 5. beginInvokeとDebuggerStepThroughAttributeと他の属性を使用する理由
- 6. 属性の使用... INotifyPropertyChanged
- 7. MSTest属性の使用
- 8. ExpectedException属性の使用
- 9. カスタム属性の使用
- 10. JQuery同じ要素の他の属性を使用して要素の属性を設定する方法
- 11. 工場の定義では、他の工場の属性を使用して属性を割り当てます。
- 12. クラス属性を他の(同じ属性)クラスにマッピング
- 13. 他の属性名のjQuery hasClass
- 14. jQueryを使用して要素idやその他の属性にアクセスするには?
- 15. 属性の検証他のIteratorの別の属性を比較する
- 16. Python - オブジェクトの排他的な属性値?
- 17. 他の属性の値で計算される属性の作成
- 18. スタイル属性内でのインポートの使用
- 19. MVHのUIHint属性の使用方法
- 20. オブジェクト要素のスタンバイ属性の使用
- 21. .NETの[Obsolete(string、bool)]属性の使用
- 22. [Range]属性のクラス定数の使用
- 23. ol.source.OSMの属性 'url'の使用方法
- 24. カスタム属性の適切な使用?
- 25. カスタム属性の強制使用
- 26. 'securityTrimmingEnabled'属性の使用方法
- 27. jQueryを使用した属性のローカライゼーション
- 28. __initと__exit属性の使用
- 29. RIAサービス:使用する属性(装飾)のリストとその機能
- 30. XMLRoot/XMLElementの使用とSerializable()属性の使用の違い(C#)
偉大な、私はまだfunc.func_nameのチップのおかげで言ったことを完全に理解する必要があります。 –
関数には '__name__'があることに注意してください。あなたが最初に見つけた '__name__'はモジュールにあり、その名前はインポートされたものであるか、または初期の呼び出されたモジュールのための' '__main __ ''です。いずれの場合でも、 'sys.modules [__ name __]'は現在のモジュールです。 –