<i id='fF4Wu'><tr id='fF4Wu'><dt id='fF4Wu'><q id='fF4Wu'><span id='fF4Wu'><b id='fF4Wu'><form id='fF4Wu'><ins id='fF4Wu'></ins><ul id='fF4Wu'></ul><sub id='fF4Wu'></sub></form><legend id='fF4Wu'></legend><bdo id='fF4Wu'><pre id='fF4Wu'><center id='fF4Wu'></center></pre></bdo></b><th id='fF4Wu'></th></span></q></dt></tr></i><div id='fF4Wu'><tfoot id='fF4Wu'></tfoot><dl id='fF4Wu'><fieldset id='fF4Wu'></fieldset></dl></div>
    • <bdo id='fF4Wu'></bdo><ul id='fF4Wu'></ul>
    <legend id='fF4Wu'><style id='fF4Wu'><dir id='fF4Wu'><q id='fF4Wu'></q></dir></style></legend>
    <tfoot id='fF4Wu'></tfoot>

  • <small id='fF4Wu'></small><noframes id='fF4Wu'>

        为什么不能从方法访问类变量?

        Why is a class variable not accessible from a method?(为什么不能从方法访问类变量?)

          <small id='tj2xj'></small><noframes id='tj2xj'>

                  <tbody id='tj2xj'></tbody>
                  <bdo id='tj2xj'></bdo><ul id='tj2xj'></ul>
                • <legend id='tj2xj'><style id='tj2xj'><dir id='tj2xj'><q id='tj2xj'></q></dir></style></legend>
                • <i id='tj2xj'><tr id='tj2xj'><dt id='tj2xj'><q id='tj2xj'><span id='tj2xj'><b id='tj2xj'><form id='tj2xj'><ins id='tj2xj'></ins><ul id='tj2xj'></ul><sub id='tj2xj'></sub></form><legend id='tj2xj'></legend><bdo id='tj2xj'><pre id='tj2xj'><center id='tj2xj'></center></pre></bdo></b><th id='tj2xj'></th></span></q></dt></tr></i><div id='tj2xj'><tfoot id='tj2xj'></tfoot><dl id='tj2xj'><fieldset id='tj2xj'></fieldset></dl></div>
                  <tfoot id='tj2xj'></tfoot>
                  本文介绍了为什么不能从方法访问类变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  考虑:

                  class Foo:
                      a = 1
                      def bar():
                          print(a)
                  

                  我希望a通过限定规则作用域对该方法可用:首先是本地,然后是封闭.

                  Foo创建命名空间和作用域,不是吗?

                  bar创建一个作用域;它不是包含在类的作用域中吗?bar的作用域中没有定义a,所以我希望它从封闭的作用域中提取类变量。

                  显然,我对名称空间和作用域感到困惑。我试着阅读了这方面的资料,但没有找到关于这一点的明确说明(当然,self.a是有效的)。

                  推荐答案

                  类主体不是嵌套作用域,No。PythonExecution Model显式排除它:

                  在类挡路中定义的名称的范围仅限于类挡路;它不会扩展到方法的代码块

                  这是因为类的主体被执行以形成类属性;将其视为具有局部变量的函数,并且局部变量将成为新类对象的属性。

                  然后,您可以直接在类(Foo.a)上访问这些属性,也可以通过实例访问这些属性(其中属性查找通过类)。

                  这篇关于为什么不能从方法访问类变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  GUI Freezes while downloading PyQt5 and Pytube(GUI在下载PyQt5和Pytube时冻结)
                  How to solve memory issues while multiprocessing using Pool.map()?(如何解决使用Pool.map()进行多处理时的内存问题?)
                  Python - How to use FastAPI and uvicorn.run without blocking the thread?(Python-如何使用FastAPI和uvicorn.run而不阻塞线程?)
                  How to increment a shared counter from multiple processes?(如何从多个进程递增共享计数器?)
                  Using pika, how to connect to rabbitmq running in docker, started with docker-compose with external network?(使用pika,如何连接运行在docker中的rabbitmq,从docker开始-与外部网络连接?)
                  How to use .rolling() on each row of a Pandas dataframe?(如何对 pandas 数据帧的每一行使用.roll()?)

                • <tfoot id='uSECy'></tfoot>
                • <legend id='uSECy'><style id='uSECy'><dir id='uSECy'><q id='uSECy'></q></dir></style></legend>

                  • <bdo id='uSECy'></bdo><ul id='uSECy'></ul>

                      <small id='uSECy'></small><noframes id='uSECy'>

                              <tbody id='uSECy'></tbody>
                          • <i id='uSECy'><tr id='uSECy'><dt id='uSECy'><q id='uSECy'><span id='uSECy'><b id='uSECy'><form id='uSECy'><ins id='uSECy'></ins><ul id='uSECy'></ul><sub id='uSECy'></sub></form><legend id='uSECy'></legend><bdo id='uSECy'><pre id='uSECy'><center id='uSECy'></center></pre></bdo></b><th id='uSECy'></th></span></q></dt></tr></i><div id='uSECy'><tfoot id='uSECy'></tfoot><dl id='uSECy'><fieldset id='uSECy'></fieldset></dl></div>