object-oriented – always use the get and set methods is a bad practice, directly call an attribute class a bad practice in OOP?

I have a doubt as to whether there are any recommendations for calling an attribute directly into a class

I think in OOP you should always call an attribute by the get method.

For example:

On set

public setAtribute (Atribute atr) {this.atr = atr;}

On get

    public Atribute getAtribute () {return this.atr;}

On the constructor

public constructor (attribute atr) {
setAttribute (atr);

If the attribute is injected into the super class, I use this method to call it, inherits the class:

protected attribute atr;

Public attribute getAttribute (Attribute atr) {
back atr;

THIS IS TO SAY. I always prefer to use get and set in OOP to access the attributes.

But in my work, there is a debate because there are people who do not like that. Because you can write the following code:

getAttribute (). callSomeFunctionality ();

But I prefer these instead of:

this.callSomeFunctionality ();

And I think it does not violate Demeter's law, because it's a variable class.

What do you think of that?

The best use is always the get and set function, or there are other cases to call directly to assign.

There is some literature on this subject?

Thank you