Вызов функций / методов класса внутри цикла for - PullRequest
0 голосов
/ 13 июня 2018

Я работаю над некоторыми классами, и для процесса тестирования было бы очень полезно иметь возможность запускать методы класса в цикле for.Я добавляю методы и меняю их имена, и я хочу, чтобы это автоматически изменялось в файле, где я запускаю класс для тестирования.

Я использую приведенную ниже функцию, чтобы получить список методов, которые мне нужно запустить автоматически (есть некоторые другие условные операторы, которые я удалил для примера, чтобы убедиться, что я запускаю только определенные методы, которые требуют тестирования и которые толькоиметь в качестве аргумента self)

def get_class_methods(class_to_get_methods_from):
    import inspect
    methods = []
    for name, type in (inspect.getmembers(class_to_get_methods_from)):
        if 'method' in str(type) and str(name).startswith('_') == False:
            methods.append(name)
    return methods

Можно ли использовать возвращенный список 'методов' для запуска методов класса в цикле for?

Или есть какой-нибудь другой способ убедиться, что я могу запустить свои методы класса в моем файле testingrunning без необходимости изменять или добавлять вещи, которые я изменил в классе?

Спасибо!

1 Ответ

0 голосов
/ 13 июня 2018

Выглядит так, как вы хотите getattr(object, name[, default]):

class Foo(object):
    def bar(self):
        print("bar({})".format(self))


f = Foo()
method = getattr(f, "bar")
method()

В качестве примечания: я не уверен, что динамическое создание списков методов для тестирования - это хорошая идея (скорее, антипаттерн кя) - сейчас трудно сказать без контекста всего проекта, поэтому возьмите это замечание с необходимой долей соли;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...