当类和类方法具有同名变量时,如何在方法中访问类变量?

时间:2018-02-13 00:58:43

标签: python python-3.x python-2.7

我无法在同一个类的方法中访问类变量,我的方法也具有相同的类变量名称

export function items(state = initState, action) {
  switch (action.type) {
    case "APPROVE":
      return {
        ...state,
        loading: true
      };
    case "APPROVED":
      return {
        ...state,
        loading: false,
        item: {
          status: "approved"
        }
      };
    case "RESET":
      return {
        ...state,
        loading: true
      };
    case "DONE_RESET":
      return {
        ...state,
        loading: false,
        item: {
          status: "pending"
        }
      };
    default:
      return state;
  }
}

2 个答案:

答案 0 :(得分:1)

此代码将帮助您理解类变量,实例变量和局部变量之间的区别。

class Test:
x = 10 //class variable or static variable; shared by all objects
def __init__(self):
    self.x = 20 //instance variable; different value for each object
def func(self, x): //method variable
    print Test.x
    print self.x
    print x

输出:
10
20
30
Test.x打印静态变量。要使用实例变量,必须使用self.instance_variable,并且可以在方法中直接使用局部变量。

答案 1 :(得分:0)

您需要执行以下操作! 正如Barmar所提到的,对类和类变量使用相同的名称并不是一个好习惯!

>>> class x():
...     def method(self, v1):
...             self.x = v1
...             print self.x
...
>>> y = x()
>>> y.method(5)
5
>>> y.x
5