在python类中使用self返回属性

时间:2013-09-12 23:06:13

标签: python oop

我来自javascript背景,我认为这是我首先提出这个问题的原因。

使用self在方法定义中引用类的属性时是否有任何区别。

E.G。

class Foo:
  _bar = 15;

  def getBar(self):
    return self._bar;

VS

class Foo:
  _bar = 15;

  def getBar(self):
    return _bar;

我想我可以通过说出在引用类中的属性时使用self的效果来重新解释这个问题。 I.E.如果由于某些奇怪的原因,我想在 getBar()中返回一个全局_bar变量,该怎么办?

1 个答案:

答案 0 :(得分:1)

您的第二个代码不会返回class属性。它将返回全局_bar(如果存在),否则将引发NameError异常。这是因为类范围不会自动从方法中查找 - 在查找变量时只查找函数范围和全局范围。

您可以使用return Foo._barreturn self._bar返回类属性(即在所有实例之间共享的属性)。

要返回实例属性,您需要return self._bar