Как вывести все методы класса в Python?

Пользователь

от carlo.cummerata , в категории: Python , 3 года назад

Как вывести все методы класса в Python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@carlo.***merata  Для того, чтобы вывести все методы класса, Вы можете воспользоваться методами dir(), callable(), getattr()


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Axe:
    def __init__(self, x : int = 0, y : int = 0):
        self.x = x
        self.y = y
    
    def calc(self):
        print(self.x + self.y)
    
    def higher(self):
        print(x if x > y or x == y else y)

if __name__ == '__main__':
    axe = Axe()

    methods = list()

    for meth in dir(axe):
        if callable(getattr(axe, meth)) and not (meth.startswith('__')):
            methods.append(meth)

    print(methods)

    # Вывод :
    # ['calc', 'higher']


Для полного списка методов вы можете убрать "meth.startswith('__')"


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Axe:
    def __init__(self, x : int = 0, y : int = 0):
        self.x = x
        self.y = y
    
    def calc(self):
        print(self.x + self.y)
    
    def higher(self):
        print(x if x > y or x == y else y)

if __name__ == '__main__':
    axe = Axe()

    methods = list()

    for meth in dir(axe):
        if callable(getattr(axe, meth)):
            methods.append(meth)

    print(methods)

    # Вывод :
    # ['__class__', '__delattr__', '__dir__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'calc', 'higher']

Пользователь

от wilburn , год назад

@carlo.***merata 

Вы можете использовать встроенную функцию dir() для вывода всех методов и атрибутов класса, например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class MyClass:
    def __init__(self, x):
        self.x = x
        
    def add(self, y):
        return self.x + y
    
    def subtract(self, y):
        return self.x - y

print(dir(MyClass))


Вывод:

1
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'add', 'subtract']