python - 为什么类方法访问它的类变量中需要 `global var`?

标签 python global

class Test:
    num1 = 1

# CASE 1
# WHY GLOBAL HERE? But no global below in CASE 2
    global num2
    num2 = 2

    def printNum2(self):
        return num2

## FAILURE WITH NON-GLOBAL num2, why?
# should print 2, with instance
i = Test()
print i.printNum2()



# CASE 2
#
#AUTOMATICALLY GLOBAL SCOPE?
num1=1

def print1():
    return num1


print print1()

最佳答案

您不需要全局来使 printNum2 正常工作。相反,使用这个:

class Test:
  num1 = 1
  num2 = 2

  def printNum2(self):
      return self.num2

如果您想执行以下操作,则只需要全局:

x = Test()
print num2
//instead of 
print x.num2

关于python - 为什么类方法访问它的类变量中需要 `global var`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396983/

相关文章:

typescript - 在 TypeScript 中使用全局包的正确方法是什么?

c - 文件中的全局静态变量与函数中的局部静态变量具有可比性吗?

Python:如何使用循环导入调用另一个文件中的函数

python - 用 Pandas 读取格式错误的 'csv' 文件

c# - 对 C# Excel 加载项的变量和属性的全局访问

php - 索引 "server_name"不存在

python - 通过 Python 运行终端命令时出现问题

python - 如何随机排序图像及其掩码?

python - 在 PySide QTreeWidget 中为行设置背景

android - 如何在扩展 Activity 类的同时使用 Application 类共享变量