your feedback to my first project please

D'Arcy Cain darcy at
Sat Jan 7 08:04:02 EST 2012

On 12-01-07 07:10 AM, patrick at wrote:
> It's my first script in python and I'd like to know if my way of coding
> so far is right and if YOU have some little tips for me
> or if you can point my nose on some things I've missed so far.

Looks pretty good overall.  I have a little armchair quarterbacking
for you.

The main thing I wonder is why a dict to store values.  You index by
a contiguous range of ints so why not use a list.  __init__ becomes
this.  Note I also lose those superfluous underscores.

   def __init__(self, dim, default=0): = [default] * dim
     self.pos = 0
     self.dim = dim

Here is how I would write avg() (not _avg)

   def _avg(self):
     """Calculates the average of all values currently in stock.
        This also includes the default values not yet overwritten."""

     return sum(

You could drop your inout method with this change to avg():

   def _avg(self, value = None):
     """Calculates the average of all values currently in stock.
        This also includes the default values not yet overwritten.
        Optionally adds a new value."""

     if value is not None:

     return sum(

I am not sure how you get a float out of this though.  You may
want to set self.dim to float(dim) in __init__.

> I've read a lot of the official documentation - even some of the weired
> but cool stuff. And I also read some PEPs like the PEP 8. And I'd love to
> go for TDD. But feedback would help me on my way.

I don't know why TDD seems to be more popular with Python programmers
than others but I do recommend as much of that as possible.

> - How is my code formatting?


> I know the TestCases are ugly, I still have no feeling for it. :(

Test cases don't have to be pretty, just extensive.  What I can't tell
is whether you wrote the tests first or not.  The sequence should be;

  1. Write the test
  2. Run the test to prove it fails
  3. Write code until test passes
  4. Stop

Steps 2 and 4 are particularly important.  Step 2 assures that you
have a real test.  A test that can't fail is useless.  Step 4 assures
that you never add code without a test.

However, don't be afraid to add extra tests at any time.

> - What about my coding style in general?
> Is my naming of variables, classes and methods/functions stupid?

I would just ease up on the underscores.

Looks like you are on the right track though.

D'Arcy J.M. Cain <darcy at>         |  Democracy is three wolves                |  and a sheep voting on
+1 416 425 1212     (DoD#0082)    (eNTP)   |  what's for dinner.
IM: darcy at Vex.Net

More information about the Python-list mailing list