variable scope of class objects
Luca Menegotto
otlucaDELETE at DELETEyahoo.it
Tue Oct 20 02:17:16 EDT 2015
Il 19/10/2015 20:39, JonRob ha scritto:
> I (think) I understand that in the below case, the word self could be
> replaced with "BME280" to explicitly call out a variable.
>
> But even still I don't know how explicit call out effects the scope of
> a variable.
These two statements make me think you come from C++ or something similar.
In Python you can declare variables at class level, but this declaration
must NOT be interpreted in the same manner of a similar declaration in
C++: they remain at the abstract level of a class, and they have nothing
to do with an instance of a class (in fact, to be correctly invoked,
they must be preceeded by the class name).
'self' (or a similar representation, you could use 'this' without
problem) gives you access to the instance of the class, even in the
constructor; it is important, because the constructor is the place where
instance variables should be defined. Something like this:
class foo:
# invoke with foo._imAtClassLevel
_imAtClassLevel = 10
def __init__(self):
# need to say how this must be invoked?
self._imAtInstanceLevel = 0
no confusion is possible, because:
class foo2:
_variable = 1000
def __init__(self):
# let's initialize an instance variable with
# a class variable
self._variable = foo2._variable
Please, note that declaring a variable in the constructor is only a
convention: in Python you can add a variable to an object of a class
wherever you want in your code (even if it is very dangerous and
discouraged).
--
Ciao!
Luca
More information about the Python-list
mailing list