Pythonでのプログラミングの正しい方法について質問があります...多分いくつかの異なる意見があるかもしれませんが、ここにそれがあります:
いくつかのプライベート属性を持つクラスがあり、2つのゲッター/セッターを実装したとしましょう(オーバーロード__getattr__
で__setattr__
はなく、より「Java-tistic」スタイルで):
class MyClass:
def __init__(self):
self.__private1 = "Whatever1"
def setPrivate1(self, private1):
if isinstance(private1, str) and (private1.startswith("private")):
self.__private1 = private1
else:
raise AttributeError("Kaputt")
def getPrivate1(self):
return self.__private1
次に、同じクラスの別のメソッドで、その「__private1」の値を再設定する必要がある数行を考えてみましょう。同じクラスなので、プライベート属性self.__private1に直接アクセスできます。
私の質問は:私は使用する必要があります:
self.setPrivate1("privateBlaBlaBla")
または、次のように直接アクセスする必要があります。
self.__private1 ="privateBlaBlaBla"
私が新しい値を設定しているので、その値( "privateBlaBlaBla")が正しい( "private"で始まるstr())ことがわかっているので、システムに一貫性がなくなることはありません。一方、別のプログラマーが私のコードを取得し、self .__ private1属性の機能を変更する必要がある場合、彼はすべてのコードを調べて、__private1の値が別の場所で手動で設定されているかどうかを確認する必要があります。
私の推測では、常にsetPrivate1メソッドを使用し、get / setの__private1変数に直接アクセスするだけですが、経験豊富なPythonプログラマーの意見を知りたいと思います。