Sobes.tech
Middle

Hogyan hívod meg az A osztály minden metódusát?

sobes.tech MI

Válasz az MI-től

Tegyük fel, van egy A osztályunk metódusokkal:

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

Az összes metódus meghívásához:

  • what_time — normál metódus, példányon keresztül hívható:

    a = A('szia')
    print(a.what_time())
    
  • useless_getter — tulajdonság, szögletes zárójelek nélkül hívható attribútumként:

    print(a.useless_getter)
    
  • __private_or_public — dupla alsó vonallal ellátott metódus, a neve változik (name mangling), így hívható:

    print(a._A__private_or_public())
    
  • __str__ — speciális metódus, automatikusan hívódik szöveggé alakításkor:

    print(str(a))
    

Tehát, a dupla alsó vonallal ellátott privát metódus hívásához a névhez a osztály nevét kell hozzáfűzni: _A__private_or_public().