Disable automatic interning

"Martin v. Löwis" martin at v.loewis.de
Wed Mar 18 15:29:08 EDT 2009


>>> Is there a way to turn off (either globally or explicitly per
>>> instance) the automatic interning optimization that happens for small
>>> integers and strings (and perhaps other types) ? I tried several
>>> workarounds but nothing worked:
>> No.  It's an implementation detail.
>>
>> What use case do you have for wanting to disable it?
> 
> I'm working on some graph generation problem where the node identity
> is significant (e.g. "if node1 is node2: # do something) but ideally I
> wouldn't want to impose any constraint on what a node is (i.e. require
> a base Node class). It's not a show stopper, but it would be
> problematic if something broke when nodes happen to be (small)
> integers or strings.

In essence, yes, there is a way for turning off the automatic interning
optimization: in your API, explicitly wrap all nodes with another
object, and use *that* object as the node.

Regards,
Martin



More information about the Python-list mailing list