私はPythonプロジェクトに取り組んでいますし、class.variablenameを指定することでインスタンス変数名に直接アクセスできるので、同じものにゲッター関数を実装することをお勧めしますか?私は変数を非公開として宣言していません。ゲッター関数の実装を避けることは、Pythonの悪い習慣ですか?
0
A
答えて
10
Javaのような言語では、属性を取得または設定するときに追加の処理(値の検証、アクセス制御、ログなど)を追加したい場合は、クラスのインタフェースを変更する必要がないようにgetterとsetterを実装します。 。これは、書かなかったアプリケーションでクラスを使用する場合に特に重要です。
Pythonでは、インターフェイスを変更せずに@property
の属性にコードを追加できます。代わりにそのコードを実行する必要があります。開始するには通常の属性アクセスを使用し、後で動作を追加する必要がある場合は@property
を追加します。
でも、ゲッターとセッターの機能を単純にしておいてください。属性へのアクセスはかなり速くなると予想され、その期待に反することは避けてください。値を取得するために重要な作業を行う必要がある場合は、メソッドが適切ですが、たとえばgetFoo()
ではなく、calculateFoo()
のようなわかりやすい名前を付けます。
関連する問題
- 1. Javascript - 関数の配列はこの悪い習慣です
- 2. これは悪い習慣ですか?
- 3. 関数式を別の関数の引数として使用することは悪い習慣ですか?
- 4. JavaScriptの関数引数を変更するのは悪い習慣ですか?
- 5. 複数の返品をすることは悪い習慣ですか?
- 6. 既存の関数をテンプレートでオーバーロードするのは悪い習慣ですか?
- 7. BackPressedを呼び出すことは悪い習慣ですか?
- 8. jQuery関数内でJavascriptを使用するのは悪い習慣ですか?
- 9. IDisposableを実装しているWindowsサービス - 悪い習慣ですか?
- 10. 論理を表示することは悪い習慣です
- 11. は@unlink悪い習慣ですか?
- 12. 変数のdidSetの中にオプションの関数を呼び出すことは悪い習慣ですか?
- 13. Derefをnewtypeに実装することは悪い習慣と考えられますか?
- 14. 一般ヘルパー関数に$ .extendを使うのは悪い習慣ですか?
- 15. メソッドの静的なローカル変数は悪い習慣ですか?
- 16. 任意のSQLテーブルを作成することは悪い習慣ですか?
- 17. golangのエラーをリセットするのは悪い習慣ですか?
- 18. これは悪い習慣ですか? C++
- 19. ステートフルヘルパークラスを使用するのは悪い習慣ですか?
- 20. 単体テストをループで実行するのは悪い習慣ですか?
- 21. スイッチケースにスイッチケースを入れるのは悪い習慣ですか?
- 22. eslintrcファイルをグローバルにインストールすることは悪い習慣ですか?
- 23. .exeファイルをNugetパッケージに含めることは悪い習慣ですか?
- 24. 関数引数として渡されるテーブルのカラム名に頼るのは悪い習慣ですか?
- 25. Javaで `this`を使うのは悪い習慣ですか?
- 26. Java - クラスコンストラクタを持たないことは悪い習慣ですか?
- 27. コールバックの変数をシャドーするのは悪い習慣ですか?
- 28. これは悪い習慣です(これは間違っていますか)。
- 29. 拡張メソッドと拡張プロパティは悪い習慣ですか?
- 30. リポジトリパターン内のIDでフィルタするのは悪い習慣です
より軽いものを実行でき、読みやすさが向上し、ランタイムの複雑さが軽減されたら、そのことを行う必要があります。 getterを呼び出すことは、 'self .__ dict__'でルックアップを行うよりもコストがかかるので、読みにくくなるだけでなく、遅くなります*。 –
これは意見ベース(トピック外)だと思いますが、私はgetterを 'property'として実装すると、あなたの属性にアクセスできますが、改ざんされていないことが理想的です。 –
publicでない場合は、1つまたは2つのアンダースコアで変数名を開始します。特別なゲッター/セッターが必要な場合は、それをプライベートとして作成し、ゲッタ/セッターを作成します。 – akg