No Thoughts about Everything
Keel Thaan
kmt at MailCentro.zzn.com
Wed Feb 25 18:21:52 EST 2004
Josiah Carlson wrote:
>> This will create c as an unmodifiable attribute:
>>
>> c = property(lambda self: 2.99792458e8)
>>
>>
>> Does that do what you want?
>
>
> >>> class foo:
> ... c = property(lambda self: 2.99792458e8)
> ...
> >>> v = foo()
> >>> v.c
> 299792458.0
> >>> v.c += 1
> >>> v.c
> 299792459.0
> >>> foo().c
> 299792458.0
> >>>
>
> It doesn't quite work.
I suppose I should have mentioned that you have to use a new-style class:
>>> class foo(object):
... c = property(lambda self: 2.99792458e8)
...
>>> v = foo()
>>> v.c
299792458.0
>>> v.c += 1
Traceback (most recent call last):
File "<input>", line 1, in ?
AttributeError: can't set attribute
I don't think the behavior of property() is even officially defined for
old-style classes.
More information about the Python-list
mailing list