Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #30086

Re: data attributes override method attributes?

From Peter Otten <__peter__@web.de>
Subject Re: data attributes override method attributes?
Date 2012-09-25 16:08 +0200
Organization None
References <931902e1-570b-4288-bb9b-de711318c5cd@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.1338.1348582105.27098.python-list@python.org> (permalink)

Show all headers | View raw


Jayden wrote:

> In the Python Tutorial, Section 9.4, it is said that
> 
> "Data attributes override method attributes with the same name."

The tutorial is wrong here. That should be

"Instance attributes override class attributes with the same name."

As methods are usually defined in the class and data attributes are usually 
set in the instance it will look like data override method attributes. 
What the author had in mind:

>>> class A:
...     def i(self): print "method"
... 
>>> 
>>> a = A()
>>> a.i()
method
>>> a.i = 42 # this could also happen in a method with self.i = 42
>>> a.i()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> a.i
42
   
> But in my testing as follows:
> 
> #Begin
> class A:
>         i = 10
>         def i():
>                 print 'i'
> 
> A.i
>    <unbound method A.i>
> #End

but

class A:
    def i(self): print "i"
    i = 42

print A().i # 42

If two objects are assigned to the same name the last assignment always 
wins.
 
> I think A.i should be the number 10 but it is the method. There must be 
something I misunderstand. Would you please tell me why?
 
No, you're right. Please file a bug report at http://bugs.python.org

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

data attributes override method attributes? Jayden <jayden.shui@gmail.com> - 2012-09-25 06:41 -0700
  Re: data attributes override method attributes? alex23 <wuwei23@gmail.com> - 2012-09-25 06:52 -0700
  Re: data attributes override method attributes? Peter Otten <__peter__@web.de> - 2012-09-25 16:08 +0200
    Re: data attributes override method attributes? alex23 <wuwei23@gmail.com> - 2012-09-25 07:11 -0700
      Re: data attributes override method attributes? Peter Otten <__peter__@web.de> - 2012-09-25 16:54 +0200
      Re: data attributes override method attributes? Chris Angelico <rosuav@gmail.com> - 2012-09-26 01:03 +1000
      Re: data attributes override method attributes? Ulrich Eckhardt <ulrich.eckhardt@dominolaser.com> - 2012-09-25 16:54 +0200
      Re: data attributes override method attributes? Terry Reedy <tjreedy@udel.edu> - 2012-09-25 15:58 -0400
      Re: data attributes override method attributes? Ian Kelly <ian.g.kelly@gmail.com> - 2012-09-25 14:07 -0600
      Re: data attributes override method attributes? Terry Reedy <tjreedy@udel.edu> - 2012-09-25 16:18 -0400
      Re: data attributes override method attributes? Terry Reedy <tjreedy@udel.edu> - 2012-09-25 16:34 -0400
      RE: data attributes override method attributes? "Prasad, Ramit" <ramit.prasad@jpmorgan.com> - 2012-09-28 18:02 +0000
        Re: data attributes override method attributes? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-09-29 03:20 +0000
      Re: data attributes override method attributes? Ian Kelly <ian.g.kelly@gmail.com> - 2012-09-28 12:25 -0600
      Re: data attributes override method attributes? Terry Reedy <tjreedy@udel.edu> - 2012-09-28 14:26 -0400
    Re: data attributes override method attributes? Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2012-09-25 21:52 +0200
  Re: data attributes override method attributes? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-09-25 14:12 +0000

csiph-web