How can I create customized classes that have similar properties as 'str'?
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sat Nov 24 12:15:36 EST 2007
Licheng Fang a écrit :
> I mean, all the class instances that equal to each other should be
> reduced into only one instance, which means for instances of this
> class there's no difference between a is b and a==b.
Here's a Q&D attempt - without any garantee, and to be taylored to your
needs.
_values = {} #id(instance) => value mapping
_instances = {} #hash(value) => instance mapping
class Value(object):
def __new__(cls, value):
try:
return _instances[hash(value)]
except KeyError:
instance = object.__new__(cls)
_values[id(instance)] = value
_instances[hash(value)] = instance
return instance
@apply
def value():
def fget(self):
return _values[id(self)]
def fset(self, ignore):
raise AttributeError("%s.value is read only" % type(self))
def fdel(self):
raise AttributeError("%s.value is read only" % type(self))
return property(**locals())
HTH
More information about the Python-list
mailing list