Mix-In Class Methods At Run-Time
Bruno Desthuilliers
onurb at xiludom.gro
Mon Jun 26 12:36:00 EDT 2006
digitalorganics at gmail.com wrote:
> Bruno Desthuilliers wrote:
>
>>digitalorganics at gmail.com wrote:
(snip)
>>>and 2) what's the reason to use newstyle classes
>>>versus the old?
>>
>>All this is explained on python.org (there's a menu entry for this in
>>the documentation menu). AFAICT, newstyle classes can do whatever
>>oldstyle classes did, *and much more* (descriptors and usable
>>metaclasses) - and they are somewhat faster too. So - compatibility with
>>older Python versions (< 2.2 IIRC) set aside -, there's just no reason
>>to use oldstyle classes.
>>
>>
>>> In order to create the dynamic class "NewClass" in the
>>>code above I called type() but that requires at least one new style
>>>class as a base. Thus, I had to have at least one of my animals inherit
>>>from "object" and this seemed a nuisance since
>>
>>OMG, eight more keystrokes - talk about a nuisance...
>
>
> Like, Oh My God! *claps hand to mouth* lol You humor me. Yes, eight
> more keystrokes. I follow the general rule of, if I'm going to put in
> extra effort,
OMG, eight more keystrokes - talk about extra effort !-)
> I'd like to know why.
The only reason for *not* doing it would be compat issues with pre 2.2.x
versions.
> So you see, it's not so much an
> adversion to the eight keystrokes (multiplied by however many classes I
> have mind you),
Strange enough, I do write my share of Python code, and don't even
notice typing the EightKeystrokes.
> but to not knowing why I should use them.
Because they are kind of the standard Python object model since 2.2.x ?-)
Did you at least take time to read the doc on newstyle classes on
python.org ?
FWIW, with 2.5, even exceptions are now newstyle classes. No more
oldstyle classes in the builtins. And AFAICT, no more oldstyle classes
in the standard lib neither. Does that ring a bell ?
> If I don't
> care for descriptors or metaclasses,
You *do* care for descriptors. Without descriptors, no properties, no
classmethods, no staticmethods... What a desolation :(
More seriously, given what you're into actually, not caring about what
one can do with newstyle classes seems really strange to me - like
digging a swimming-pool with a pick and a shovel when you have an
excavator... (disclaimer : google translation, not sure it makes sens in
english...)
> I don't see why I should feel
> compelled to use them.
"them" -> "newstyle classes" or "descriptors and metaclasses" ?
> And when I decide I want/need these features, I
> can put the eight keystroke in at that time.
What can I say ? That's your code, not mine...
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list