Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我不能引用类中定义的全局变量?_Python - Fatal编程技术网

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

Python 为什么我不能引用类中定义的全局变量?,python,Python,在这段代码中,它抱怨“代码映射未定义”。MyClass中的所有东西都可以访问代码映射吗?用self初始化它。这将使类中的任何函数都可以通过self传递它来访问它。然后将self作为函数参数传递给任何要传递变量的对象 class MyClass(object): code_mapping = {...} def get_name(code): code = code_mapping[code] ... 或者你可以: class MyClass(object):

在这段代码中,它抱怨“代码映射未定义”。MyClass中的所有东西都可以访问代码映射吗?

用self初始化它。这将使类中的任何函数都可以通过self传递它来访问它。然后将self作为函数参数传递给任何要传递变量的对象

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

 def get_name(code):

    code = code_mapping[code]
    ...
或者你可以:

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]
        ...
如果希望在类实例化时将一些代码映射作为参数传递给类

若要从此处创建一个类对象,您需要{'code1':'name'},然后启动一个类对象,如下所示:

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

    def get_name(self):

        code = self.code_mapping[code]
        ...

然后,{'code1':'name'}将被带入get_name所做的任何事情中,get_name中的代码值将是name

它是可用的,但只能通过类或self。本周矛盾修饰法:在类中定义的全局变量。将其放入构造函数中…构造函数是必需的还是可选的?您是否每次都将新参数传递给self.code\u映射,还是这将是一个硬编码的变量self.code\u映射[名称],其中“name”是一个变量,不需要,但需要良好的实践。这也是创建新类时向类传递变量的方式。
code1 = MyClass({'code1' : 'name'})