On Friday, May 29, 2015 at 10:18:29 AM UTC-7, Ethan Furman wrote:
> On 05/29/2015 10:03 AM, sohcahto...@gmail.com wrote:
> > On Friday, May 29, 2015 at 9:02:06 AM UTC-7, Mike Driscoll wrote:
> 
> >> I've been asked on several occasions to write about intermediate or 
> >> advanced topics
> >>  in Python and I was wondering what the community considers to be 
> >> "intermediate" or
> >>  "advanced". I realize we're all growing in our abilities with the 
> >> language, so this
> >>  is going to be very subjective, but I am still curious what my fellow 
> >> Python
> >>  developers think about this topic.
> >
> > Metaclasses.
> >
> > I've read about them.  I still don't understand them, why you would want 
> > them, and what you gain from them.
> 
> Metaclasses change the way a class behaves.
> 
> For example, the new (in 3.4) Enum class uses a metaclass.
> 
>    class SomeEnum(Enum):
>       first = 1
>       second = 2
>       third = 3
> 
> The metaclass changes normal class behavior to:
> 
>    - support iterating: list(SomeEnum) --> [SomeEnum.first, SomeEnum.second, 
> SomeEnum.third]
>    - support a length:  len(SomeEnum) --> 3
>    - not allow new instances to be created:  --> SomeEnum(1) is SomeEnum(1)  
> # True
> 
> --
> ~Ethan~

Regarding the first two, you can implement __iter__ and __len__ functions to 
create that functionality, though those functions would operate on an instance 
of the class, not the class itself.

As for the third, can't you override the __new__ function to make attempts to 
create a new instance just return a previously created instance?
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to