Sobes.tech
Middle

Como chamar cada um dos métodos da classe A?

sobes.tech IA

Resposta da IA

Vamos supor que temos uma classe A com métodos:

import time

class A:
    def what_time(self):
        return f'{time.time()}'

    @property
    def useless_getter(self):
        return self.text

    def __private_or_public(self):
        return 1

    def __str__(self):
        return self.text

    def __init__(self, text):
        self.text = text

Para chamar cada método:

  • what_time — método normal, chamado através de uma instância:

    a = A('olá')
    print(a.what_time())
    
  • useless_getter — propriedade, chamado como um atributo sem parênteses:

    print(a.useless_getter)
    
  • __private_or_public — método com duplo sublinhado, o nome muda (name mangling), para chamar:

    print(a._A__private_or_public())
    
  • __str__ — método especial, chamado automaticamente ao converter para string:

    print(str(a))
    

Assim, para chamar um método privado com duplo sublinhado, deve-se usar o nome com a classe: _A__private_or_public().