使用Class时名称不是definef错误

时间:2016-02-08 09:59:19

标签: python

我面临的问题是以Class为框架的代码。

基本上它只是一个文件中定义了函数。

所以当我尝试使用命令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函数,它也可以正常工作,没有错误。

现在我创建了Class,然后将所有函数移动到同一个。

以上功能现在改写如下。

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()

但是,现在我收到的错误如下:

root@devstack:/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 个答案:

答案 0 :(得分:1)

可能你必须定义这个吗?

class Example(object):

   keystone = Keystone()

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