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