Глобальная переменная - это переменная, доступная глобально.Локальная переменная - это переменная, которая доступна только для текущей области, например, временные переменные, используемые в определении одной функции.Переменная экземпляра (например, при использовании префикса self.
) - это данные, связанные с конкретным экземпляром объекта.Конечно, вы также можете ссылаться на объекты экземпляра вне объекта, используя object.x
, где object
является ссылкой на этот объект.
Если переменная имеет префикс self
, она не является ни локальной, ни глобальной.Это часть состава конкретного экземпляра объекта.Грубо говоря, переменная экземпляра представляет собой свойство конкретного объекта.
В следующем примере lx
является локальной переменной, локальной для метода greet
.gx
- это глобальная переменная, доступная в любом месте модуля, ix
- это переменная экземпляра, которая может иметь уникальное значение для каждого экземпляра объекта.При ссылке внутри определения объекта вы будете ссылаться на ix
с префиксом self
, а вне объекта с префиксом ссылки на объект.
gx = "hello"
class Foo:
def __init__(self, who):
self.ix = who
def greet(self):
lx = "%s, %s" % (gx, self.ix)
return lx
foo = Foo("world")
print foo.greet()
print foo.ix