Is it bad style to override the built-in function `type`?

Michael Herrmann michael.herrmann at getautoma.com
Fri Nov 23 13:41:10 EST 2012


Thank you for your feedback. I sent the following reply to Joel but it didn't make it through to the mailing list: 

Hi Joel,

thanks for your reply. I can see why you think it's a bad idea. The reason why we want to call it `type` is that this is precisely the word that is most commonly used in our context, GUI automation. There are alternative names (see http://bit.ly/10aOy4H for a huge list) , but leaving aside the fact that Python has an overwriteable meaning for `type`, none fits quite as well. One of the main goals of our tool/API is to be as close to everyday English as possible, and thus hopefully to be intuitive also for novice users. For this reason it is very tempting for us to use `type`. Several people in the original thread http://bit.ly/10aOy4H have suggested `type` because it best fits our problem domain, and have said that they don't mind it overriding a built-in function.

I know it's a common beginner's mistake to incautiously override built-in functions. However, we put in a lot of research and have come to the conclusion that, if Python had not already defined it, `type` would be the best name. We are now trying to evaluate how bad the disadvantages you mention are in comparison to the advantage to having a name that is more intuitive to use in the problem domain.

Can you somehow relate to my explanations, or are your experiences with overwriting built-in variables so bad that you would advise to never ever do it?

Thanks!
Michael

On Friday, November 23, 2012 7:36:20 PM UTC+1, Terry Reedy wrote:
> On 11/23/2012 11:22 AM, Joel Goldstick wrote:
> 
> >
> 
> >
> 
> >
> 
> > On Fri, Nov 23, 2012 at 11:12 AM, Michael Herrmann
> 
> > <Michael Herrmann>
> 
> > wrote:
> 
> >
> 
> >     Hi,
> 
> >
> 
> >     do you think it's bad style to override the built-in function
> 
> >     `type`? I'm co-developing a GUI automation library called Automa
> 
> >     (http://www.getautoma.com) and 'type' would be a very fitting name
> 
> >     for a function that generates artificial key strokes.
> 
> >
> 
> > Personally, I think this is a horrible idea.  On this list and the tutor
> 
> > list, people often use variable names that are already defined in the
> 
> > language.  It leads to non obvious errors -- especially when revisting
> 
> > old code.  Why not call the thing 'key_stroke'?
> 
> 
> 
> I agree.
> 
> 
> 
> -- 
> 
> Terry Jan Reedy



More information about the Python-list mailing list