开发者社区> 问答> 正文

实例中静态变量的作用域?

我对下面Python静态变量的代码片段感到困惑。当我执行时,我将访问实例变量。但是如果我注释掉第3行,那么就会访问静态变量。我想知道为什么实例方法是这样的。

class Test:
     static_variable = "this is static variable"

     def __init__(self):
            self.static_variable= "this is some instance variable" # 3

     def some_method(self):
             print(self.static_variable)

t = Test()
t.some_method()

问题来源StackOverflow 地址:/questions/59467044/python-instance-method-scope

展开
收起
kun坤 2019-12-25 09:33:38 413 0
1 条回答
写回答
取消 提交回答
  • 实例变量属于类的某个特定实例,静态变量属于类,因为它们的作用域在整个类中都是可用的,所以也被称为全局变量。在类中定义实例变量或静态变量时,可以放在任何位置。但为了美观规范,设计类时最好统一放在类中的最前面。

    public class Testvariable {
        int a; //实例变量
        static int b; //静态变量    
        //不能声明后,单独赋值
        a = 5; //error
        b = 5; //error
    }
    

    因为不符合语法规则, 赋值语句这个操作要放在语句块中才能执行。但可以声明变量后直接赋值进行初始化:

    int a = 5; //实例变量
       static int b = 5; //静态变量
    
    2019-12-25 13:51:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载