为什么使用类变量的代码不像在Java中那样工作?

时间:2016-08-11 11:03:18

标签: python class namespaces static-variables

我正在从Java迁移到Python。在Java中,静态变量将向类的所有对象返回相同的值,即使它被同一个类的另一个对象更改。在我阅读的Python书中,作者说,如果数据成员的赋值发生在类定义的直接范围内,则会将其输入到类命名空间中。

我使用IDLE,Python解释器,以下是Python代码:

class ABC:
    OVRLIMIT_FEE=5

>>> a=ABC()
>>> b=ABC()

>>> a.OVRLIMIT_FEE+=1
>>> a.OVRLIMIT_FEE
6
>>> b.OVRLIMIT_FEE
5

但是如果它进入类命名空间,当用a和b访问它时它是否应该返回相同的值?

1 个答案:

答案 0 :(得分:0)

您所创建的是所谓的Oldstyle类,它不支持您(正确)预期的行为。继承自mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch(what){ case MediaPlayer.MEDIA_INFO_BUFFERING_START: // handle info 701 here, MEDIA_INFO_BUFFERING_START corresponds to 701 break; } return true; } }); 以创建新式类。然后它会像你期望的那样工作[...]

使用object被隐含地理解为a.foo += 1,其中

  • 获取类属性foo
  • 添加1
  • 将结果放入实例属性foo。

代码:

a.foo = a.foo + 1