general class functions
Dan Perl
danperl at rogers.com
Tue Nov 2 14:52:18 EST 2004
"syd" <syd.diamond at gmail.com> wrote in message
news:a76ba315.0411021009.46b06459 at posting.google.com...
> Many many thanks, Andrea and Kent!
>
> To keep changes to calls in my current code to a minimum, I'm hoping I
> can encode Andrea's "on-the-fly" get function. I added Andrea's
> __getattr__ to my Library() class, populated the class with a few
> nations, and tried:
>
>>>> library.get_continent('Europe')
This line creates and returns an instance of Library. I assume that you
imported foo in a python session and then you executed that line. That
results in a call to Library.__repr__( ), which is not defined. First of
all, I recommend you change class Library to subclass from object. That's
just good practice in general and in this case it will give you a default
__repr__( ) method. But that's probably not what you want. What you
probably want is to still use a line like:
print library.getContinent('Europe').getNameList()
Otherwise, library.get_continent('Europe') is going to print something like:
<__main__.Library object at 0x00A9F430>
Dan
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "foo.py", line 16, in __getattr__
> return self.__dict__[name]
> KeyError: '__repr__'
>
> I then commented out lines 15 and 16...
> #else:
> #return self.__dict__[name]
>
> ... and re-ran.
>
>>>> library.get_continent('Europe')
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: 'NoneType' object is not callable
>
> I tweaked a bit, but I could not get to the bottom of this problem. I
> see the logic here (and it's brilliant I should add, Andrea), but I'm
> not sure what is wrong.
>
> Ideas?
More information about the Python-list
mailing list