Sobes.tech
Middle

¿Cómo llamar a cada uno de los métodos de la clase A?

sobes.tech AI

Respuesta de la IA

Supongamos que tenemos una clase A con 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 llamar a cada método:

  • what_time — método normal, se llama a través de una instancia:

    a = A('hola')
    print(a.what_time())
    
  • useless_getter — propiedad, se llama como un atributo sin paréntesis:

    print(a.useless_getter)
    
  • __private_or_public — método con doble guion bajo, el nombre cambia (name mangling), para llamar a:

    print(a._A__private_or_public())
    
  • __str__ — método especial, se llama automáticamente al convertir a cadena:

    print(str(a))
    

Por lo tanto, para llamar a un método privado con doble guion bajo, se debe usar el nombre con la clase: _A__private_or_public().