Comment by vbezhenar 4 days ago So Python is not OOP language? You can't hide fields. 5 comments vbezhenar Reply nr378 4 days ago You can hide fields in Python with a little bit of gymnastics: class EncapsulatedCounter: def __init__(self, initial_value): _count = initial_value def increment(): nonlocal _count _count += 1 return _count self.increment = increment counter = EncapsulatedCounter(100) new_value = counter.increment() print(f"New value is: {new_value}") d0mine 4 days ago Usually, a simple function is enough: def make_counter(start=0): count = start def incr(): nonlocal count count += 1 return count return incr Example: >>> c = make_counter() >>> c() 1 >>> c() 2 But it hides nothing: >>> c.__closure__[0].cell_contents 2 >>> c.__closure__[0].cell_contents = -1 >>> c() 0 "private" in Python is cultural, not enforced. (you can access `self.__private` from outside too if you want). bluGill 4 days ago It has conventions to hide data. Good enough. vips7L 4 days ago Python was a mistake if you ask me ¯\_(ツ)_/¯ cpburns2009 4 days ago Python is the worst programming language except for all of the others.
nr378 4 days ago You can hide fields in Python with a little bit of gymnastics: class EncapsulatedCounter: def __init__(self, initial_value): _count = initial_value def increment(): nonlocal _count _count += 1 return _count self.increment = increment counter = EncapsulatedCounter(100) new_value = counter.increment() print(f"New value is: {new_value}") d0mine 4 days ago Usually, a simple function is enough: def make_counter(start=0): count = start def incr(): nonlocal count count += 1 return count return incr Example: >>> c = make_counter() >>> c() 1 >>> c() 2 But it hides nothing: >>> c.__closure__[0].cell_contents 2 >>> c.__closure__[0].cell_contents = -1 >>> c() 0 "private" in Python is cultural, not enforced. (you can access `self.__private` from outside too if you want).
d0mine 4 days ago Usually, a simple function is enough: def make_counter(start=0): count = start def incr(): nonlocal count count += 1 return count return incr Example: >>> c = make_counter() >>> c() 1 >>> c() 2 But it hides nothing: >>> c.__closure__[0].cell_contents 2 >>> c.__closure__[0].cell_contents = -1 >>> c() 0 "private" in Python is cultural, not enforced. (you can access `self.__private` from outside too if you want).
vips7L 4 days ago Python was a mistake if you ask me ¯\_(ツ)_/¯ cpburns2009 4 days ago Python is the worst programming language except for all of the others.
You can hide fields in Python with a little bit of gymnastics:
Usually, a simple function is enough:
Example:
But it hides nothing:
"private" in Python is cultural, not enforced. (you can access `self.__private` from outside too if you want).
It has conventions to hide data. Good enough.
Python was a mistake if you ask me ¯\_(ツ)_/¯
Python is the worst programming language except for all of the others.