Middle
Jak zavolat každý z metod třídy A?
sobes.tech AI
Odpověď od AI
Předpokládejme, že máme třídu A s 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
Pro volání každé metody:
-
what_time— běžná metoda, volá se přes instanci:a = A('ahoj') print(a.what_time()) -
useless_getter— vlastnost, volá se jako atribut bez závorek:print(a.useless_getter) -
__private_or_public— metoda se dvěma podtržítky, jméno se změní (name mangling), pro volání:print(a._A__private_or_public()) -
__str__— speciální metoda, volá se automaticky při převodu na řetězec:print(str(a))
Takže, pro volání soukromé metody se dvěma podtržítky je třeba použít jméno s názvem třídy: _A__private_or_public().