Sean,

KBob's script works fine in python2.2, but how do you make work with regard to
inheritance using python1.5.2 ?

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
>

Reply via email to