Class Encapsulation Errors in Python 2.3.3
Dan Perl
danperl at rogers.com
Thu Nov 18 23:37:26 EST 2004
Please post the implementation of the Album class. The problem is coming
probably from the way the Songs list is defined or initialized. That is,
the definition or the initialization probably cause the list object that is
assigned to Songs to be shared by all the Album instances. But I (and
likely no one else) can say exactly what the problem is without seing the
code.
Dan
"Tim Henderson" <tim.tadh at gmail.com> wrote in message
news:47f7cc78.0411182007.1b77c2b1 at posting.google.com...
> Hi i have some errors in my code that i can't find the reason for here
> is the error
>
> i have 3 classes:
> -Song
> -Album
> -Artist
>
> Song has 3 pieces of data with getter and setter meathods:
> -Name | i.e. song name
> -Album
> -Artist
>
> Album has 3 pieces of data:
> -Songs | a list of Song() instances
> -Name
> -Artist
>
> Artist has 4 pieces of Data:
> -Name
> -Songs | a list of Song() instances
> -Albums |a list of Album() instances
> -unknownAlbum | the album a song is put into if it doesn't have an
> album
>
>
> now the problem arises when i add songs into multiple albums like
> this:
> Code:
> ------------------------------------------------
> s = Song('song 1')
> s2 = Song('song 2')
>
> a = Album('hey')
> a.addSong(s)
> ab = Album('yeayea')
> print a
> print ab
> ab.addSong(s2)
> print
> print a
> print ab
> ------------------------------------------------
> Output:
> ************************************************
> hey song 1 hey |
> yeayea song 1 hey |
>
> hey song 1 hey | song 2 yeayea |
> yeayea song 1 hey | song 2 yeayea |
> ************************************************
>
> the "hey" album has "song 1" as it is suppose to however so does
> "yeayea" even though when "song 1" was put in the album "hey" 'yeayea'
> didn't even exist yet.
>
> Why is this happening. I checked the actually memory refrence for each
> instance and they are different, these supposidly isolated different
> intances of clases are linked for some inexplicable reason.
>
> Does any one know why this is happening and how i can fix it?
>
> cheers
> Tim Henderson
More information about the Python-list
mailing list