@Dennis,
Thanks for your example. My structure is very similar. Perhaps I was reading too much into Luca's below statement regarding declaring variables. Regards, JonRob Luca wrote... >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). On Tue, 20 Oct 2015 20:18:35 -0400, Dennis Lee Bieber <wlfr...@ix.netcom.com> wrote: >On Tue, 20 Oct 2015 17:33:21 -0400, jon...@mail.python.org declaimed the >following: > >> >> >>Hello Luca, >> >>I very much appreciated your comments. And I understand the >>importance of "doing something right" (i.e. convention). >> >>This leads me to another question. >> >>Because I am interfacing with an I2C sensor I have many register >>definations to include (30 register addresses and 26 Variables to be >>red from some of those registers. >>In your comment you mentioned that convention is to declare variables >>(and constants?) in the construction (__ini__). >>I am concerned that the sheer number of varialbe / constants would >>make it difficult to read. >> > > "Constants" are typically defined at module level, using all capitals >as a hint to the reader (Python does not have anything that one might >consider a true constant -- other than the language defined singletons: >None, and maybe by now True and False). > > Register addresses are likely "constants". Not sure about your "26 >Variables"... Do they map directly to registers, or are they extracted as >fields from the values returned -- that is, a register may have two or more >"variables"? Do you read ALL registers on command and hold the values (note >my usage -- values can be held in lists or dictionaries using a single >"variable") for later retrieval by the user, or only read A register on >command by the user and return that value. > >-=-=-=-=- ># registers for a fictitious motion sensor >GYROXREG = 0x0010 >GYROYREG = 0x0011 >GYROZREG = 0x0001 >... >MAGZREG = 0x0100 > >class SensorA(I2C): #I'm assuming class I2C provides read/write functions > _registers = [GYROXREG, GYROYREG, GYROZREG, > ..., MAGZREG] > def __init__(self, SCLpin, SDApin, slaveAddress): > self._SCL = SCLpin > self._SDA = SDApin > self._addr = slaveAddress > self.update() #initial load of values > def update(self): > #basically a loop over all addresses > #I'm not going to try to pseudo code the full I2C protocol > self.values = {} #yes, a dictionary > for reg in _registers: > aValue = self.read(self._SCL, self._SDA, self._addr, > reg) > #inherited from I2C class > self.values[reg] = aValue >.... > >mySensor = SensorA(21, 22, 0x6) > >while True > mySensor.update() > print ("Gyro X: %s, Y: %s, Z: %s" > % (mySensor.values[GYROXREG], > mySensor.values[GYROYREG], > mySensor.values[GYROZREG])) > time.sleep(1.0) > > > > -- https://mail.python.org/mailman/listinfo/python-list