On Mon, May 11, 2015 at 11:18 AM, zipher <dreamingforw...@gmail.com> wrote: > Okay. I apologize for thinking in C and believing "int" was a keyword. It > isn't in Python as you remind me. However, this is where I'm arguing the > purity has hammered practicality into the ground. > > Python is trying to be as elegant as LISP in trying to make everything an > Object. It's not necessary, and it's trying to put lipstick on a pig instead > of making BBQ. Python will be as elegant, but in a different direction of > the axis. >
How is it a problem for an integer to be an object? In Python, I can put together a generic handler for a generic list and depend on everything being an object: lst = ["asdf", 2, lambda x: x+1, re.compile("q[a-tv-z]"), 3.14159] In Java, I would have to box up that integer 2 and that float 3.14159 (and maybe the string too?) to make it possible to put them into a generic collection, because integers and objects are fundamentally different things. In Python, ints and floats and strings all follow the same rules as other objects: they can be passed around, stored in collections, turned into strings with str() or repr(), etc, etc, etc. They have methods, they react to operators, everything is done according to a simple set of rules. This does not harm practicality - it's extremely helpful in a number of situations. And I still don't see how this has anything to do with your confusion about shadowing the name 'int'. As I see it, attempting to redefine int to be a null subclass of str should have one of two results: either it's a straight-up error, or it does exactly what happens in Python - calling 'int' now calls a subclass of 'str'. ChrisA -- https://mail.python.org/mailman/listinfo/python-list