building embedded classes as in C/C++

Andy Beall beall at psych.ucsb.edu
Wed Aug 4 12:32:09 EDT 1999


Yes, thanks for the reply--I now see what I was doing wrong.  What
through me off (besides not reading thoroughly enough) was that non-list
and non-class variables are not class wide when declared using the
convention I did.  I understand now how to do what I want but why do
simple scalar-like variables work one way and lists and classes
another.  I'm definitely missing some subtlety of Python here...

For example,

class Object:
       p = 0 
       pos = Point()
       ang = Point()

Here, 'p' does not seem to be class-wide while 'pos' and 'ang' are.  Why
the discrepancy?

Thanks for any enlightenment,
Andy-



Markus Stenberg wrote:
> 
> Andy Beall <beall at psych.ucsb.edu> writes:
> > I'd like to build an embedded structure (Python class) much like I do in
> > C if possible.  When I do the following, multiple instances of my final
> > class overwrite each others sub-class values!
> 
> You did not pay attention, however; you set _class_wide_ variables, global
> to all instances (pos, ang). Thus, the behavior was to be expected.
> 
> Try this instead:
> 
> class Object:
>         def __init__(self):
>                 self.pos = Point()
>                 self.ang = Point()
> 
> >




More information about the Python-list mailing list