variable scope of class objects

Random832 random832 at fastmail.com
Mon Oct 19 15:01:14 EDT 2015


JonRob at mail.python.org writes:
>
> The below pseudo code is distilled from my 1st attempt at a functional
> Python program on the RasPi.
>
> My questions are:
> What is the scope of class variables?

You must access them as members of the class or an instance of the class.

> does the self. prefix modify this scope?

self just refers to the instance of the class that the function was
called with. It can be any name.

Python automatically transforms any reference to "[object].func" into a
function (specifically, a bound method object) that will prefix [object]
to the argument list of the defined function.

> #!/usr/bin/python
> # -- developed using Python 2.7.3
>
> class BME280:
>
> # all the below are class variables
> # those preceded by an underscore are predefined to some constant

Constants should be in uppercase, not prefixed with an underscore.

Names prefixed with an underscore imply that they are "private" (not
really) and therefore other code should not use them directly

> # those without the underscore are to be "working" variables.

I don't know what you mean by "working".

>
>     _regT1       = 0x88
>     _regH6       = 0xE7
>     _coeff_P2    = 0x82
>     _coeff_P6    = 0x32
>     
>     filter       = 0    #should these be "self"?
>     t_fine       = 0

I don't know, should they? If so they need to be in __init__.

You haven't provided any functions that use them, so it's not clear what
they're for.

>     
>     def __init__(self, address=0x76, debug=True):
>         self.i2c = Adafruit_I2C(address)
>         self.address = address
>         self.debug = debug
>                 
>     def pressure_calc(self):
>         var1 = self.i2c.readU16(self._regT1,False)
>         p = (1048576.0 - var1) * _coeff_P2
>         return p
>         
>     def read_pressure(self):      #called  by main application
>         pressure_hPa = pressure_calc(self) /10 
>         # apply compensation
>         return pressure_hPa




More information about the Python-list mailing list