Я прихожу из мира Java и читаю Bruce Eckels 'Python 3 Patterns, Recipes и 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())
Если true, то любой объект класса 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?