Thanks, Larry, that works. "a language feature would not be worthy of the name 'class' without supporting inheritance."
At 11:49 AM 3/11/02 Larry Price <[EMAIL PROTECTED]> wrote: >On Mon, 11 Mar 2002, Ralph Zeller wrote: > >> >> KBob's script works fine in python2.2, but how do you make work with regard to >> inheritance using python1.5.2 ? >> >The UserList class encapsulates a list that can then have additional >methods added to it. > >You need to import it before you can inherit from it. > >from UserList import UserList > >class myfoo(UserList): > pass > > >> Ralph >> --- >> # python >> Python 1.5.2 (#1, Jul 5 2001, 03:02:19) [GCC 2.96 20000731 (Red Hat Linux >> 7.1 2 on linux-i386 >> Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >> >>> class t(list): pass >> ... >> Traceback (innermost last): >> File "<stdin>", line 1, in ? >> TypeError: base is not a class object >> >>> >> >>> class t(UserList.UserList): pass >> ... >> Traceback (innermost last): >> File "<stdin>", line 1, in ? >> NameError: UserList >> >>> >> >> At 09:02 PM 3/10/02 Sean Reifschneider <[EMAIL PROTECTED]> wrote: >> >On Wed, Mar 06, 2002 at 11:44:04PM -0800, Bob Miller wrote: >> >>class StatSample: >> > >> >In Python 2.1 and earlier, you could have made this a sub-class of the >> >"UserList" class: >> > >> > >>> class foo(UserList.UserList): pass >> > ... >> > >>> l = foo() >> > >>> print l >> > [] >> > >> >As I mentioned before, 2.2 includes the ability to subclass directly from >> >"list". Either of these options would prevent you from needing the __*__ >> >and append() methods. >> > >> >> def minimum(self): >> >> min = None >> >> for d in self: >> >> if min is None or min > d: >> >> min = d >> >> return min >> > >> >You could do these as: >> > >> > def minimum(self): return(min(self)) >> > def maximum(self): return(max(self)) >> > >> >Or, simply done away with the methods and relied on the fact that the >> >min()/max() builtins will operate on sequences: >> > >> > >>> list = [ 'a', 5, 1, 73 ] >> > >>> min(list) >> > 1 >> > >>> max(list) >> > 'a' >> > >> >> def mean(self): >> >> if len(self) == 0: raise >> >> sum = 0 >> >> for d in self: >> >> sum += d >> >> return sum / len(self) >> > >> >A common way of doing this is by using "reduce()", which takes a list and >> >applies a function to return a single value: >> > >> > def mean(self): >> > sum = reduce(lambda x, y: x + y, self) >> > return(sum / len(self)) >> > >> >>for line in fileinput.input(): >> >> timestamp = re.match(r'\[(\d+)\:(\d+)\:(\d+)\]', line) >> >> if timestamp: >> >> hr, min, sec = [int(n) for n in timestamp.groups()] >> > >> >I would probably have done: >> > >> > hr, min, sec = map(int, timestamp.groups()) >> > >> >map() is like reduce, but it instead of returning one value (the list >> >reduced to one value), it applies the function to every element and >> >returns a list of the new values. I mostly avoid the comprehension >> >syntax because I don't comprehend it. ;-) >> > >> >># Calculate and print statistics. >> >> >> >>print len(ftimes), "frames" >> >>print "fastest:", time_format(ftimes.minimum()), >> >>print " slowest:", time_format(ftimes.maximum()) >> >>print "mean:", time_format(ftimes.mean()) >> >>print "standard deviation:", time_format(ftimes.std_deviation()) >> > >> >How about: >> > >> > print '%d frames' % len(ftimes) >> > print 'fastest: %s slowest: %s' % ( time_format(ftimes.minimum()), >> > time_format(ftimes.maximum()) ) >> > print 'mean: %s\nstandard deviation: %s' % ( time_format(ftimes.mean()), >> > time_format(ftimes.std_deviation()) ) >> > >> >or: >> > >> > print '%d frames' % len(ftimes) >> > print 'fastest: %s slowest: %s\nmean: %s\nstandard deviation: %s' % \ >> > map(time_format, min(ftimes), max(ftimes), ftimes.mean(), >> > ftimes.std_deviation()) >> > >> >Sean >> >-- >> > The structure of a system reflects the structure of the organization that >> > built it. -- Richard E. Fairley >> >Sean Reifschneider, Inimitably Superfluous <[EMAIL PROTECTED]> >> >tummy.com - Linux Consulting since 1995. Qmail, KRUD, Firewalls, Python >> > >> > >http://www.efn.org/~laprice ( Community, Cooperation, Consensus >http://www.opn.org ( Openness to serendipity, make mistakes >http://www.efn.org/~laprice/poems ( but learn from them.(carpe fructus ludi) >