Python bugs

Bjorn Pettersen bjorn at roguewave.com
Mon Nov 29 22:44:31 CET 1999


>     Bjorn> Which is a good thing, but shouldn't preclude it 
> from being used
>     Bjorn> as a dictionary in the update statement (although the fix
>     Bjorn> probably have to be to Dict.update rahter than os.environ).
> 
> You are correct.  It would have to make some assumptions 
> about how to get a
> dict from an instance object.  Should it access the 
> instance's "__dict__"
> attribute or (in this case) the "data" attribute or try to an 
> "as_dict"
> method?  Since no such well-defined interface currently exists, you're
> probably better off in the short term simply executing
> 
>     d.update(os.environ.data)

How about:

	def update(self, other):
		... regular stuff
		if
other_is_an_instance_or_something_else_we_dont_know_about:
			for k in other.keys():
				self[k] = other[k]

That should be well defined enough, or raise the appropriate exception if it
can't be done.(?)


>     Bjorn> Cool (do you know if you can do db.items() also? 
> -- found that
>     Bjorn> one five minutes ago...)
> 
> I don't see it, and I doubt it's going to get added any time 
> soon.  One
> motivation for using on-disk mappings such as provided by 
> bsddb and (g)dbm
> is that they can be really huge (hundreds of thousands or 
> millions of keys
> are not out of the question).  Asking for values() or items() in these
> situations is much more likely to get you into memory trouble than for
> simple dicts which tend to be smaller.

[workarounds snipped]

Yes, all of these are easy to work around if you really need to -- the point
being you shouldn't need to <0.1 wink>

It's true that on-disk mappings can get huge.  It's also true that sometimes
they're just used for convenient persistence of moderately sized data.  I
think it's generally a bad idea to try to prevent people from potentially
shooting themselves in the foot :-)

-bjorn




More information about the Python-list mailing list