empty classes as c structs?
Nick Coghlan
ncoghlan at iinet.net.au
Sat Feb 5 21:50:53 EST 2005
Steven Bethard wrote:
> Nick Coghlan wrote:
>> I think the idea definitely deserves mention as a possible
>> implementation strategy in the generic objects PEP, with the data
>> argument made optional:
>
>
> That's basically what the current implementation does (although I use
> 'update' instead of '='). The code is complicated because the
> implementation also takes all the argument types that dicts take.
The main difference I noticed is that by using update, any changes made via the
attribute view are not reflected in the original dict.
By assigning to __dict__ directly, you can use the attribute view either as it's
own dictionary (by not supplying one, or supplying a new one), or as a
convenient way to programmatically modify an existing one. For example, you
could use it to easily bind globals without needing the 'global' keyword:
Py> class attr_view(object):
... def __init__(self, data):
... self.__dict__ = data
...
Py> def f():
... gbls = attr_view(globals())
... gbls.x = 5
...
Py> x
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'x' is not defined
Py> f()
Py> x
5
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at email.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.skystorm.net
More information about the Python-list
mailing list