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