Я приїжджаю зі світу Java та читаю « Шаблони, рецепти та ідіоми» Брюса Екклса « Пітон 3» .
Читаючи про класи, далі йдеться про те, що в 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 нас вчили про публічні / приватні / захищені змінні. Ці ключові слова мають сенс, оскільки час від часу вам потрібні змінні в класі, до якого ніхто з класу не має доступу.
Чому цього не потрібно в Python?