[Tutor] What is __weakref__ ?
Karim
karim.liateni at free.fr
Tue Jan 18 14:08:29 CET 2011
Hello Steven,
> (1) slots = [] doesn't do anything special. You have misspelled
> __slots__.
Yes sorry my mistake :-[
> (2) Classes don't become read only just because you add __slots__ to
> them. All you prevent is adding extra attributes, and why would you
> wish to do that?
I know this is ugly but until now it is the only way (with this side
effect) I found to declare Enums class that I _understand_:
*class CategoryType(object):
"""Implements the enumeration and prevent associated newly created
instances to redefine enums value via special class variable
'__slots__'
definition. It makes also, instances have no attributes at all.
"""
__slots__ = ()
TRANSISTOR, MOS, BIPOLAR, CAPACITOR, RESISTOR, DIODE, ESD, PAD, \
COMPARATOR, OPAMP, ADC, DAC, PLL, OTHER = range(14)
def toString ( self, litteral ):
"""Convert the litteral integer number to its associated string
representation."""
if litteral == self.TRANSISTOR:
return 'transistor'
elif litteral == self.MOS:
return 'mos'
elif litteral == self.BIPOLAR:*
[...]
I discovered recently that I could configure __setattr__(self, name,
value) by raising AttributeError to prevent to set up a new attribute value.
Or use an conditional statement to avoid to define it twice.
If you have good advice for enum (I hope I could understand) you welcome
;-) .
Thus I use __slots__, __dict__ (in __setattr__) and I wanted to about
much for __weakref__
> Have you read the Fine Manual?
>
> http://docs.python.org/reference/datamodel.html#slots
>
In fact, I already read that. But I am searching for doc about what is a
weak reference.
>
> >>> class K1(object):
> ... __slots__ = [] # Don't support weak-refs.
> ...
> >>> class K2(object):
> ... __slots__ = '__weakref__' # Do support weak-refs.
> ...
> >>> import weakref
> >>> k1 = K1()
> >>> k2 = K2()
> >>> weakref.ref(k1)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: cannot create weak reference to 'K1' object
> >>> weakref.ref(k2)
> <weakref at 0xb7c6661c; to 'K2' at 0xb7ee762c>
Same thing I don't know what to do with this object weakref :-[ as I
don't know its meaning. That was my true question in fact;
Regards
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110118/b3883170/attachment.html>
More information about the Tutor
mailing list