OOP: métodos getter / setter

Así que he leído que se supone que debes acceder a los atributos de los objetos a través de métodos getter / setter como object.get_this() o object.set_that(value) . ¿Se mantiene este código para los métodos que también están definidos dentro de la clase? O solo están destinados a ser utilizados con instancias de objetos. Por ejemplo, es idiomático hacerlo de esta manera,

 class test: def __init__(self,value): self.value = value def get_value(self): return self.value def method(self): return some_operation(self.value) 

con get_value() definido para acceder al value para una instancia de objeto, o debería get_value() también se debe usar dentro de los métodos de clase?

 class test: def __init__(self,value): self.value = value def get_value(self): return self.value def method(self): return some_operation(self.get_value()) 

En Python no use los métodos getter / setter . En su lugar, simplemente acceda al atributo en sí mismo o, si necesita que se ejecute un código cada vez que se accede o se establece el atributo, use las propiedades .

No accedería a los atributos de un objeto en los métodos de dicho objeto de una manera diferente a la que esperaría que los métodos de otros objetos accedan a ellos. ¿Por qué? No estoy seguro, me parece muy raro.

Python lo hace realmente fácil si usas el decorador de propiedades, lo que elimina la necesidad de que los buscadores / definidores tengan el nombre “get_foo” / “set_foo”.