Jason Tackaberry wrote:
> On Fri, 2008-03-14 at 23:01 +0100, Duncan Webb wrote:
>> Log:
>> The level needs to be come from a singleton class
> 
> You might consider looking at kaa.utils.Singleton if you need a
> singleton.  Though I'm not sure you do here.
> 
>> Not sure about the __incr__ and __decr__ functions :-/
> 
> You're right to be apprehensive about this. :)
> 
> Use __foo__ only for actual special methods, among which __incr__ and
> __decr__ are not.  They are defined at
> http://docs.python.org/ref/specialnames.html .  Something like inc() and
> dec() would be better.

:)

> I think though you might have overengineered this solution.  Why not
> just make level a class variable instead of an instance variable?  Then
> it is shared among all instances.
> 
>         class timed:
>            level = 0
>         
>            def __call__(self, func):
>               timed.level += 1
>               try:
>                  [...]
>               finally:
>                  timed.level -= 1
> 
> Note that with your current code if func() raises an exception, level
> will not get decremented.

Oh so simple, I tried using a class variable and incrementing it with a 
self.level += 1, hadn't spotted that it was also possible to use 
timed.level += 1. This makes a lot of sense and can relate this to C++.

I can now remove the global variable as I don't really like them, but it 
was definitely over-engineered.

> Also note that kaa has a decorator called timed that does something
> entirely different, so you might consider instead renaming your
> decorator to benchmark.  That way if you ever decide to use kaa.timed()
> it won't be utterly confusing. :)

Good idea, thanks, I had some doubts about the name, benchmark is better.

Duncan

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-devel mailing list
Freevo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freevo-devel

Reply via email to