Jan-10-2019, 02:48 AM
Accessing attributes directly is taboo in most programming languages and is archetypal of OOP languages in particular. It's a matter of encapsulation and ensuring that each object works correctly. Directly changing attributes without using the appropriate methods can generate bugs since any given method could update multiple attributes for consistency. The book likely mentions it because Python doesn't enforce privacy; so, respecting privacy is entirely on the programmer.
That said, Pythonistas don't hammer on this too much. Generally, we don't use setters/getters in Python because they aren't needed, whereas other languages require them.
Personally, if an attribute is private, it should either have a setter or only be set at instantiation. In the event it lacks a setter, reading it is okay but don't change it.
That said, Pythonistas don't hammer on this too much. Generally, we don't use setters/getters in Python because they aren't needed, whereas other languages require them.
Personally, if an attribute is private, it should either have a setter or only be set at instantiation. In the event it lacks a setter, reading it is okay but don't change it.