Re: instance variable weirdness

2006-04-14 Thread Felipe Almeida Lessa
Em Sáb, 2006-04-15 às 04:03 +1000, Steven D'Aprano escreveu: > Sometimes you want the default to mutate each time it is used, for example > that is a good technique for caching a result: > > def fact(n, _cache=[1, 1, 2]): > "Iterative factorial with a cache." > try: > return _cache

Re: instance variable weirdness

2006-04-14 Thread Steven D'Aprano
On Fri, 14 Apr 2006 13:30:49 -0300, Felipe Almeida Lessa wrote: > Em Sex, 2006-04-14 às 09:18 -0700, wietse escreveu: >> def __init__(self, name, collection=[]): > > Never, ever, use the default as a list. Unless you want to use the default as a list. Sometimes you want the default to mutat

Re: instance variable weirdness

2006-04-14 Thread Felipe Almeida Lessa
Em Sex, 2006-04-14 às 13:30 -0300, Felipe Almeida Lessa escreveu: > To solve your problem, change > def __init__(self, name, collection=[]): > BaseClass.__init__(self) > self.name = name > self.collection = collection # Will reuse the list > to > def __init__(self,

Re: instance variable weirdness

2006-04-14 Thread Felipe Almeida Lessa
Em Sex, 2006-04-14 às 09:18 -0700, wietse escreveu: > def __init__(self, name, collection=[]): Never, ever, use the default as a list. > self.collection = collection This will just make a reference of self.collection to the collection argument. > inst.collection.append(i) A

instance variable weirdness

2006-04-14 Thread wietse
Hello, I have written the following script to illustrate a problem in my code: class BaseClass(object): def __init__(self): self.collection = [] class MyClass(BaseClass): def __init__(self, name, collection=[]): BaseClass.__init__(self) self.name = name se