Найти - Пользователи
Полная версия: Можно ли пройтись циклом по методам класса
Начало » Python для экспертов » Можно ли пройтись циклом по методам класса
1
Mr.Anderson
Доброго времени всем. Собственно, ситуация. Есть класс. В классе множество методов, (маленькие чекеры), все они принимают одинаковые аргументы. Можно ли как нить, сделать так, что бы цикл for проходился по всем этим методам(то есть вызывал их по очередности)?
doza_and
Mr.Anderson
Можно ли как нить, сделать так, что бы цикл for проходился по всем этим методам
Да
Stright
модуль inspect
Rodegast
Stright Не нужен ни какой инспектор!
 >>> class A(object):
...     def metod1(self):
...         pass
...     def metod2(self):
...         pass
 
>>> for attr in ( getattr(A, x) for x in dir(A) if not x.find("_") == 0 ):
...     print attr
 
<unbound method A.metod1>
<unbound method A.metod2>
Mr.Anderson
Rodegast
Stright Не нужен ни какой инспектор!
Вот только почему то не выполняются сам функции.
 class A(object):
    def check1(self):
        print('1')
    def check2(self):
        print('2')
    def check3(self):
        print('3')
Не печатаются цифры.
Shaman
Mr.Anderson
Вот только почему то не выполняются сам функции.
 print attr
разве выполняет функцию?
Mr.Anderson
Shaman
Понятно, что нет.
Но как сделать, что бы выполнялась?
Понимаю, возможно туплю дико, но все же.
Rodegast
1) Не функции, а методы.
2) Я то думал что ты сам догадаешься
 >>> class A(object):
...     def metod1(self):
...         print 1
...     def metod2(self):
...         print 2
 
>>> obj = A()
>>> for attr in ( getattr(obj, x) for x in dir(obj) if not x.find("_") == 0 ):
...     attr()
1
2
Mr.Anderson
Rodegast
1) Не функции, а методы.2) Я то думал что ты сам догадаешься
Спасибо за помощь. Я был близок)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB