Newbie: question regarding references and class relationships

Jason Swails jason.swails at gmail.com
Mon Jun 10 23:49:12 EDT 2013


On Mon, Jun 10, 2013 at 7:26 PM, Dave Angel <davea at davea.name> wrote:

> On 06/10/2013 06:54 PM, Chris Angelico wrote:
>
>> On Tue, Jun 11, 2013 at 8:39 AM, Grant Edwards <invalid at invalid.invalid>
>> wrote:
>>
>>> On 2013-06-10, Terry Jan Reedy <tjreedy at udel.edu> wrote:
>>>
>>>  Another principle similar to 'Don't add extraneous code' is 'Don't
>>>> rebind builtins'.
>>>>
>>>
>>> OK, we've all done it by accident (especially when starting out), but
>>> are there people that rebind builtins intentionally?
>>>
>>
>> There are times when you don't care what you shadow, like using id for
>> a database ID.
>>
>> ChrisA
>>
>>
> And times where you're deliberately replacing a built-in
>
> try:
>    input = raw_input
> except ....


Yes but this is a hack to coerce Python2/3 compatibility.  You're no doubt
correct that it's intentional rebinding with a definite aim, but if the
PyArchitects had their way, this would be unnecessary (and discouraged) as
well.

The first time I remember rebinding a builtin was completely accidental
(and at the very beginning of me learning and using Python).

# beginner's crappy code
range = [0, 20]

# bunches of code

for i in range(len(data)):
   if data[i] > range[0] and data[i] < range[1]:
      do_something

TypeError: 'list' object is not callable... # what the heck does this mean??


That one drove me nuts. Took me hours to find.  I still avoid rebinding
builtins just from the memory of the experience :)

--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130610/b75c9911/attachment.html>


More information about the Python-list mailing list