__del__ and reference count problem

flupke flupke at nonexistingdomain.com
Thu Apr 21 09:44:37 EDT 2005


Hi,

i'm starting work and a simple database layer and wanted to use the 
__del__ to open and close a connection. However, i get an erro when 
executing this script:

class Table:
     refcount = 0
     def __init__(self, name):
         self.name = name
         print "table %s " % repr(self)
         Table.refcount += 1
         print "refcount = %s" % str(Table.refcount)

     def __del__(self):
         Table.refcount -= 1
         if (Table.refcount == 0):
             print "Last table standing"
         else:
             print "There is/are still %d table(s) left." % Table.refcount

     def __getitem__(self,item):
         return "not implemented"

     def howMany(self):
         if (Table.refcount == 1):
             print "Only 1 table"
         else:
             print "There are %d tables active." % Table.refcount

if __name__ == '__main__':
     suppliera = Table("suppliers")
     supplierb = Table("suppliers")
     print "Supplier returned from a %s: %s" % (1, suppliera[1])
     print "Supplier returned from b %s: %s" % (2, supplierb[2])
     suppliera.howMany()
     supplierb.howMany()

This produces the following output and error:
table <__main__.Table instance at 0x008D5C10>
refcount = 1
table <__main__.Table instance at 0x008D5C38>
refcount = 2
Supplier returned from a 1: not implemented
Supplier returned from b 2: not implemented
There are 2 tables active.
There are 2 tables active.
Exception exceptions.AttributeError: "'NoneType' object has no attribute 
'refcount'" in <bound method Table.__del__ of <__main__.Table instance 
at 0x008D5C10>> ignored
Exception exceptions.AttributeError: "'NoneType' object has no attribute 
'refcount'" in <bound method Table.__del__ of <__main__.Table instance 
at 0x008D5C38>> ignored

What am i doing wrong?
Thanks
Benedict



More information about the Python-list mailing list