Can't figure out 'instance has no attribute' error

Rhodri James rhodri at wildebst.org.uk
Sat May 17 20:24:57 EDT 2014


On Sun, 18 May 2014 00:56:42 +0100, <varun7rs at gmail.com> wrote:

> Hello Friends,
>
> I am working on this code but I kind of get the same error over and over  
> again. Could any of you help me fix this part of the error?

Shuffling your post around to make an explanation easier, the traceback is:

> srva at hades:~$ python RW3.py --output topology.xml --xml germany50.xml
> Traceback (most recent call last):
>   File "RW3.py", line 157, in <module>
>     main(sys.argv[1:])
>   File "RW3.py", line 152, in main
>     createnetwork(samplenetwork)
>   File "RW3.py", line 31, in createnetwork
>     graph.addNode(PHY_NODES( node.getAttribute("id"), int(num),  
> float(xCoordinates.firstChild.data),  
> float(yCoordinates.firstChild.data), float(proc), float(stor),  
> float(switch), int(totaldemands)))
> AttributeError: PHY_NETWORK instance has no attribute 'addNode'

So Python thinks that PHY_NETWORK has no "addNode", but you do.  Do you  
perchance have the tab width in your editor set to 4?  I ask, because I  
imagine that you see this:

> File RW1:
> class PHY_NETWORK:
>     def __init__(self, nodes, edges):
>         self.nodes = nodes
>         self.edges = edges
>     def addNode(self, node):
>         self.nodes.append( node )
[snippety snip]

I however saw your post like this:

> File RW1:
> class PHY_NETWORK:
>     def __init__(self, nodes, edges):
>         self.nodes = nodes
>         self.edges = edges
>         def addNode(self, node):
> 		        self.nodes.append( node )
[snippety snip]

I've replaced the tabs with spaces to make it clearer.  Basically, you've  
got a mix of tabs and spaces, which is always a bad idea, and as a result  
Python thinks that addNode is an attribute of PHY_NETWORK.__init__, not of  
PHY_NETWORK.  You need to go through and replace all your tab characters  
with four spaces, and stop using tabs.

-- 
Rhodri James *-* Wildebeest Herder to the Masses



More information about the Python-list mailing list