为什么不能引用类中定义的全局变量?

时间:2019-06-27 14:08:58

标签: python

class MyClass(object):
   code_mapping = {...}

 def get_name(code):

    code = code_mapping[code]
    ...

在这段代码中,它抱怨“未定义code_mapping”。 MyClass中的所有内容都无法访问code_mapping吗?

1 个答案:

答案 0 :(得分:1)

使用self对其进行初始化。这将使类中的任何函数都可以访问它,方法是将self.<variable>传递给它,然后将self作为函数参数传递给要传递给变量的任何对象。

class MyClass(object):
    def __init__(self):
        self.code_mapping = {...} # if this will be a hard coded 

    def get_name(self):

        code = self.code_mapping[code]
        ...

或者您可以这样做:

class MyClass(object):
    def __init__(self, code_mapping):
        self.code_mapping = code_mapping

    def get_name(self):

        code = self.code_mapping[code]
        ...

如果您希望在实例化时将一些代码映射作为参数传递给您的类。

要在您要{'code1' : 'name'}的位置创建一个类对象,请启动一个这样的类对象:

code1 = MyClass({'code1' : 'name'})

然后{'code1' : 'name'}将被执行到get_name()中,codeget_name的值将是name