Я просто наткнулся на хорошее использование eval. Я писал набор тестов для некоторого кода и создал класс Test, где каждый метод был тестом, который должен быть запущен. Я хотел, чтобы я мог запускать все методы тестирования без необходимости индивидуального вызова каждого метода. Итак, я написал что-то довольно грязное.
class Test:
def __init__(self, *args):
#bs
def test1(self):
#bs
def test2(self):
#bs
if __name__ == "__main__":
import argparse
#argparse bs
test = Test(*bs_args)
for func in (i for i in dir(test) if i[0] != '_' and i not in test.__dict__):
print(eval('test.{func}()'.format(func = func)))
Динамическая оценка произвольных тестовых случаев довольно крутая. Мне просто нужно написать этот метод, и после сохранения я могу включить этот метод в свой тестовый набор. Что касается кода, я в основном просто проверяю методы, определенные в тестовом объекте, и удостоверяюсь, что они не являются «волшебными» методами или атрибутами python для объекта Test. После этого я могу предположить, что они являются методами и могут быть оценены.
Мне удалось решить все эти проблемы, полностью переустановив Android Studio 3.3 и удалив все конфигурации и связанные с ними папки.
Сначала я переустановил IDE, но возникла та же проблема. Затем я попытался следовать инструкциям по кодированию в этом ответе « Android Studio: не отображаемый символ для кодирования UTF-8 »
Ни один из них не имел никакого эффекта. [1113 ]
Вот как я это исправил: