Sobes.tech
Middle

Cum să apelezi fiecare metodă a clasei A?

sobes.tech AI

Răspuns de la AI

Să presupunem că avem o clasă A cu metode:

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

Pentru a apela fiecare metodă:

  • what_time — metodă obișnuită, apelată printr-o instanță:

    a = A('salut')
    print(a.what_time())
    
  • useless_getter — proprietate, apelată ca atribut fără paranteze:

    print(a.useless_getter)
    
  • __private_or_public — metodă cu dublu underscore, numele se schimbă (name mangling), pentru a apela:

    print(a._A__private_or_public())
    
  • __str__ — metodă specială, apelată automat la conversia în șir de caractere:

    print(str(a))
    

Prin urmare, pentru a apela o metodă privată cu dublu underscore, trebuie să folosiți numele cu clasa: _A__private_or_public().