base classes
Pete
pete at ipartners.pl
Wed Aug 22 09:34:07 EDT 2001
Fredriks
Yes, this is what I wanted to get. It means that you cannot have the same
attributes when they are public (w/o leading __)
Pete
"Fredrik Stenberg" <mail at fredriks.org> wrote in message
news:Pine.SOL.4.30.0108221436030.2351-100000 at spel21.nada.kth.se...
> On Wed, 22 Aug 2001, Pete wrote:
> > One question about classes. I have two classes, both have attribute
called
> > 'a'
> > class a1:
> > def __init__( self ):
> > self.a = 1
> > class a2:
> > def __init__( self ):
> > self.a = 2
> > class aa( a1, a2 ):
> > def __init__( self ):
> > a1.__init__( self )
> > a2.__init__( self )
> >
> > AA = aa()
> > print AA.__dict__
> > --------------------------------------
> > this code prints:
> > {'a': 2}
> >
> > but if I change self.a to self.a_ in class a1:
> > class a1:
> > def __init__( self ):
> > self.a_ = 1
> > class a2:
> > def __init__( self ):
> > self.a = 2
> > class aa( a1, a2 ):
> > def __init__( self ):
> > a1.__init__( self )
> > a2.__init__( self )
> >
> > AA = aa()
> > print AA.__dict__
> > ------------------------------------------
> > I got:
> > {'a_': 1, 'a': 2}
> >
> > The question is: cannot 2 base classes have the same attributes? What is
> > workaround?
> >
>
> I'm not sure this is what you want but you can always prefix the attr
> with "__" to get name mangling...
>
> Check out,
>
http://www.python.org/doc/current/tut/node11.html#SECTION0011600000000000000
000
> (section 9.6 in the python tutorial)
>
> Example;
>
> class a1:
> def __init__( self ):
> self.__a = 1
>
> def printa1(self):
> print self.__a
>
> class a2:
> def __init__( self ):
> self.__a = 2
>
> def printa2(self):
> print self.__a
>
> class a3:
> def __init__( self ):
> self.a = 3
>
> def printa3(self):
> print self.a
>
> class aa( a1, a2,a3 ):
> def __init__( self ):
> a1.__init__( self )
> a2.__init__( self )
> a3.__init__( self )
>
> AA = aa()
> -----------------------------
> >>> AA.printa1()
> 1
> >>> AA.printa2()
> 2
> >>> AA.a
> 3
>
>
> /fredriks
>
More information about the Python-list
mailing list