метод python как переменная

#python #python-3.x

#python #python-3.x

Вопрос:

Python (3.7)

Я пытаюсь написать простую функцию, которая возвращает метаданные из объекта Salesforce (таблицы), где имя таблицы является аргументом. в приведенном ниже примере Booking__c — это имя объекта (таблицы), и оно возвращает collections.OrderedDict ожидаемый результат.

 from simple_salesforce import Salesforce
sf=Salesforce(username,password,organizationId)

table_info=sf.Booking__c.describe()
  

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

 def all_columns(table):
    c = exec("sf.table.describe()")
    return c
  

Я знаю, что exec() не рекомендуется использовать, поэтому был бы признателен за совет, если есть правильный способ достичь этого, или, по крайней мере, за помощь с exec.

Ответ №1:

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

Хотя ни в том, ни в другом нет необходимости. Вы можете получить доступ к атрибуту объекта по имени с помощью getattr :

 c = getattr(sf, table).describe()