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?