2016-02-08 3 views
0

Я столкнулся с проблемой с кодом, который обрамлен классом.Имя не определяет ошибку при использовании класса

По существу, это был просто файл с определенными в нем функциями.

Итак, когда я пытался выполнить файл с помощью команды python filename.py, он работает отлично по мере необходимости.

Пример кода выглядит следующим образом:

# Getting the tenant list 
# Fetch the creation_date of tenant if exists 
def get_tenants(): 

    # Fetch tenant list 
    tenants_list = keystone.tenants.list() 

    # Fetch tenant ID 
    for tenant in tenants_list: 
     tenant_id = tenant.id 
. 
. 
. 

get_tenants() 

Так, как показано в aboce кода в файле Я пытаюсь вызвать функцию get_tenants, также она работает нормально в случае необходимости без ошибок.

Теперь я создал класс, а затем переместил все функции в одно и то же.

Выше функция переписывается следующим образом.

def get_tenants(self): 

     # Fetch tenant list 
     tenants_list = keystone.tenants.list() 

     # Fetch tenant ID 
     for tenant in tenants_list: 
      tenant_id = tenant.id 

Тогда я назвал функцию следующим образом:

billing = BillingEngine() 
billing.get_tenants() 

Но, теперь я получаю ошибку следующим образом:

[email protected]:/opt/open-stack-tools/billing# python new_class.py 
Traceback (most recent call last): 
    File "new_class.py", line 281, in <module> 
    BillingEngine().get_tenants() 
    File "new_class.py", line 75, in get_tenants 
    tenants_list = keystone.tenants.list() 
NameError: global name 'keystone' is not defined 

Примечание: Обеспечит полный файл, если необходимо ,

ответ

1

Может быть, вы должны определить это?

class Example(object): 

    keystone = Keystone() 

    def get_tenants(self): 
     self.keystone.do_something() 
+0

Спасибо .. Это дало мне идею исправить это. Я только что изменил определения (ключевой камень) вне класса, так что он отлично работал. – iamnewuser

+0

@iamnewuser u r welcome –

Смежные вопросы