pretty basic instantiation question
Steven D'Aprano
steve at REMOVEME.cybersource.com.au
Mon Oct 23 21:14:29 EDT 2006
On Mon, 23 Oct 2006 17:36:14 -0700, meithamj wrote:
[fixing top-posting]
> sittner at lkb.ens.fr wrote:
>> i'm very new to python, but i have a pretty basic question:
>> let's say i have a class, and i need to create a different number of
>> instances (changes every time - and i can't know the number in advance) in
>> a loop.
As others have pointed out, the answer is "don't do that, use a list of
instances instead".
> Why do you need to know the number of instances. I know that Python
> does not support Class Variable, but you can always create a global
> variable and increase it whenever you add a new instance. this will
> keep a record for you of how many instances you have.
That's not what the Original Poster asked for, but there is a better way
than keeping a global variable. Make the counter a class attribute. That
way you don't have to increment the global, the class does its own
counting.
class CountedClass:
count = 0
def __init__(self, arg):
self.__class__.count += 1
self.arg = arg
def __del__(self):
self.__class__.count -= 1
Example:
>>> a = CountedClass(4)
>>> b = CountedClass(4)
>>> c = CountedClass(4)
>>> CountedClass.count
3
>>> a = 1
>>> CountedClass.count
2
>>> del b
>>> CountedClass.count
1
>>> L = [CountedClass(None) for i in range(1000)]
>>> CountedClass.count
1001
--
Steven
More information about the Python-list
mailing list