如何在 Python 中引用 class 下声明的变量?

How do I reference the variable declared under a class in Python?

我对 Python 比较陌生,我正在使用 Python 2.7.x

我对 Python 中的名称空间有疑问:

class Team():
    x = 2 
    def p(self):
        print x 

a = Team()
a.p()

当我 运行 代码时,它显示 global x is not definedx 不应该属于 Team 对象吗?我的目标是创建一个 Team class,其中 x 的默认值为 2。

在 Java 中会是这样的:

class Team()
{
    int x = 2;
}

a = new Team();

如果您想要实例属性和默认值 2 :

class Team(object): # use object for new style classes 
    def __init__(self, x=2):
        self.x = x # use self to refer to the instance

    def p(self):
        print self.x # self.x 

a = Team()
a.p()
2

b = Team(4) # give b a different value for x
b.p()
4

class vs instance attributes

之间的区别

new vs old style classes

如果你想把 x 作为 class 变量,试试这个方法:

class Team(object):
    x = 2 
    def __init__(self):
      pass

print Team.x
Team.x = 3
print Team.x

不需要实例化获取值,可以随意更改。

如果你想将 num 作为实例 属性,你必须使用 self(就像 Java 中的这样):

class Team(object):

  def __init__(self, num):
    self.num = num

  def get_num(self):
    return self.num

  def set_num(self, change_num):
    self.num = change_num

t1 = Team(2)
print t1.get_num()
t1.set_num(3)
print t1.get_num()