Sobes.tech
Middle

Πώς καλείτε κάθε μία από τις μεθόδους της κλάσης A;

sobes.tech AI

Απάντηση από AI

فرض کنیم که یک کلاس A داریم با متدها:

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

برای فراخوانی هر متد:

  • what_time — متد عادی، از طریق نمونه فراخوانی می‌شود:

    a = A('سلام')
    print(a.what_time())
    
  • useless_getter — ویژگی، به صورت یک ویژگی بدون پرانتز فراخوانی می‌شود:

    print(a.useless_getter)
    
  • __private_or_public — متد با دو زیرخط، نام آن تغییر می‌کند (name mangling)، برای فراخوانی:

    print(a._A__private_or_public())
    
  • __str__ — متد خاص، به صورت خودکار هنگام تبدیل به رشته فراخوانی می‌شود:

    print(str(a))
    

بنابراین، برای فراخوانی یک متد خصوصی با دو زیرخط، باید از نام همراه با کلاس استفاده کنید: _A__private_or_public().