Sobes.tech
Middle

Ako zavolať každý z metód triedy A?

sobes.tech AI

Odpoveď od AI

Predpokladajme, že máme triedu A s metódami:

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

Na volanie každej metódy:

  • what_time — bežná metóda, volá sa cez inštanciu:

    a = A('ahoj')
    print(a.what_time())
    
  • useless_getter — vlastnosť, volá sa ako atribút bez zátvoriek:

    print(a.useless_getter)
    
  • __private_or_public — metóda s dvojitým podčiarknutím, názov sa mení (name mangling), na volanie:

    print(a._A__private_or_public())
    
  • __str__ — špeciálna metóda, volá sa automaticky pri konverzii na reťazec:

    print(str(a))
    

Preto, na volanie súkromnej metódy s dvojitým podčiarknutím, je potrebné použiť názov s triedou: _A__private_or_public().