ya know, I've searched for these "new classes" at least five times.
I've heard all the wonderful things about how they make your life into
a piece of chocolate with rainbows sprinkled in it.  Never once have I
found a site that explains what syntax to use to make these new
classes.

Anyone have a URL?


Scott David Daniels wrote:
> [EMAIL PROTECTED] wrote:
> > I'm getting rather inconsistent behavior with staticmethod.
> Not really.
>
> >>>> class A:
> >     def orig():
> >             print "hi"
> >     st = staticmethod(orig)
> >     st2 = st
> >     wrapped = [ orig ]
> >     wrapped2 = [ st ]
> ...
>  >>>> A.wrapped[0]() # ODD - wrapping orig() in a list makes orig() work?
>  > hi
>  >>>> A.wrapped2[0]() # ODD - copying st works -- A.st2() -- but copying
> it to a list fails?
> ...
>
> When you put orig in wrapped, it is _before_ the class is built,
> so you are placing a simple function of no args in a list.
>
> When you put st in wrapped2, it is also _before_ the class is built,
> so you are placing staticmethod(a simple function of no args) in a list.
>
> You really should be using new-style classes, some things just
> work wrong in "classic classes" (this is not one of those things,
> however).
>
> When the class gets built, the staticmethod wrapper is used to determine
> how to build A.  The class construction gets handed the "namespace"
> that was defined in the class suite, and it fumbles over the defined
> names determining what conversions to apply (and looking for things
> like "__metaclass__" and "__slots__").  For more on all of this read
> the language reference, esp. the "Data Model" section, and probably that
> on the difference between old-style and new-style classes.
> 
> 
> 
> --Scott David Daniels
> [EMAIL PROTECTED]

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to