Sobes.tech
Middle

Jak wywołać każdą z metod klasy A?

sobes.tech AI

Odpowiedź od AI

Załóżmy, że mamy klasę A z metodami:

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

Aby wywołać każdą metodę:

  • what_time — zwykła metoda, wywoływana przez instancję:

    a = A('cześć')
    print(a.what_time())
    
  • useless_getter — właściwość, wywoływana jako atrybut bez nawiasów:

    print(a.useless_getter)
    
  • __private_or_public — metoda z podwójnym podkreśleniem, nazwa się zmienia (name mangling), aby wywołać:

    print(a._A__private_or_public())
    
  • __str__ — specjalna metoda, wywoływana automatycznie przy konwersji do stringa:

    print(str(a))
    

W związku z tym, aby wywołać prywatną metodę z podwójnym podkreśleniem, należy użyć nazwy z klasą: _A__private_or_public().