Python dynamic attribute creation
Ethan Furman
ethan at stoneleaf.us
Fri Jun 25 14:38:22 EDT 2010
WANG Cong wrote:
> On 06/25/10 15:34, Bruno Desthuilliers <bruno.42.desthuilliers at websiteburo.invalid> wrote:
>
>> WANG Cong a écrit :
>>> Hi, list!
>>>
>>> I have a doubt about the design of dynamic attribute creation by
>>> assignments in Python.
>>>
>>> As we know, in Python, we are able to create a new attribute of
>>> a class dynamically by an assignment:
>>>
>>>>>> class test: pass
>>> ...
>>>>>> test.a = "hello"
>>>>>> test.a
>>> 'hello'
>>>
>>> However, I still don't get the points why Python designs it like this.
>>>
>>> My points are:
>>>
>> (snip)
>>
>> Python's classes are plain objects, and like any other object are
>> created at runtime. Having to special-case them would break the
>> simplicity and uniformity of Python for no good reason. Just like
>> there's no good reason to make setattr() working differently for class
>> and non-class objects.
>>
>
> For implementaiton, perhaps, but not for the language design, how could
> a language design be perfect if we can use setattr() like assignments
> while use other things, e.g. delattr(), not? Is there any way to express
> delattr() as simple as expressing setattr() with assignments? I doubt...
>>> del test.a
>>> test.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class test has no attribute 'a'
Looks pretty simple to me...
~Ethan~
More information about the Python-list
mailing list