Does Python have “private” variables in classes?

Pochodzę ze świata Java i czytam Bruce'a EckelsaWzory Pythona 3, przepisy i idiomy.

Podczas czytania o klasach mówi się, że w Pythonie nie ma potrzeby deklarowania zmiennych instancji. Po prostu używasz ich w konstruktorze, a boom, oni tam są.

Na przykład:

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())

Jeśli to prawda, to każdy obiekt klasySimple może po prostu zmienić wartość zmiennejs poza klasą.

Na przykład:

if __name__ == "__main__":
    x = Simple("constructor argument")
    x.s = "test15" # this changes the value
    x.show()
    x.showMsg("A message")

W Javie nauczono nas o zmiennych publicznych / prywatnych / chronionych. Te słowa kluczowe mają sens, ponieważ czasami potrzebujesz zmiennych w klasie, do której nikt poza klasą nie ma dostępu.

Dlaczego nie jest to wymagane w Pythonie?

questionAnswers(11)

yourAnswerToTheQuestion