Declaring a variable in a class (outside of a function): all class functions can access it (basically a public variable)
Declaring a variable inside a function insid
Since the listing in your question is not 100% clear, I've decided to explain it with a simple example. It also includes some things like __something
variables you did not mention in your list.
class Test:
a = None
b = None
def __init__(self, a):
print self.a
self.a = a
self._x = 123
self.__y = 123
b = 'meow'
At the beginning, a
and b
are only variables defined for the class itself - accessible via Test.a
and Test.b
and not specific to any instance.
When creating an instance of that class (which results in __init__
being executed):
print self.a
doesn't find an instance variable and thus returns the class variableself.a = a
: a new instance variable a
is created. This shadows the class variable so self.a
will now reference the instance variable; to access the class variable you now have to use Test.a
self._x
creates a new instance variable. It's considered "not part of the public API" (aka protected) but technically it has no different behaviour.self.__y
creates a new instance variable named _Test__y
, i.e. its name is mangled so unless you use the mangled name it cannot be accessed from outside the class. This could be used for "private" variables.b
creates a local variable. It is not available from anywhere but the __init__
function as it's not saved in the instance, class or global scope.