私は Java の世界から来て、Bruce Eckels のPython 3 Patterns, Recipes and Idiomsを読んでいます。
クラスについて読んでいると、Python ではインスタンス変数を宣言する必要がないことがわかります。コンストラクターでそれらを使用するだけで、ブームが発生します。
たとえば、次のようになります。
class Simple:
def __init__(self, s):
print("inside the simple constructor")
self.s = s
def show(self):
print(self.s)
def showMsg(self, msg):
print(msg + ':', self.show())
それが真の場合、クラスの任意のオブジェクトは、クラスの外部でSimple
変数の値を変更できます。s
例えば:
if __name__ == "__main__":
x = Simple("constructor argument")
x.s = "test15" # this changes the value
x.show()
x.showMsg("A message")
Java では、public/private/protected 変数について教えられてきました。クラス外の誰もアクセスできないクラス内の変数が必要な場合があるため、これらのキーワードは理にかなっています。
なぜPythonでそれが必要ないのですか?