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

V

varun7rs

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?

File RW1:
class PHY_NETWORK:
def __init__(self, nodes, edges):
self.nodes = nodes
self.edges = edges

def addNode(self, node):
self.nodes.append( node )

def addEdge(self, edge):
self.edges.append( edge )

File RW3:
def createnetwork(graph):


doc = parse( args.paramFile )
noderef = []
num = 0
nodelist = doc.getElementsByTagName("node")
for node in nodelist:
noderef.append(node.getAttribute("id"))
proc = random.randint(3500, 5000)
stor = random.randint(7200, 8200)
switch = random.randint(7000, 10000)
num = num + 1
totaldemands = random.randint(1, 5)
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)))


linkid = 0
linklist = doc.getElementsByTagName("link")
for link in linklist :
linkid = linkid + 1
Source = link.getElementsByTagName("source") [0]
Destination = link.getElementsByTagName("target") [0]
Capacity = link.getElementsByTagName("capacity") [0]
SourceID = noderef.index(Source.firstChild.data) + 1
DestinationID = noderef.index(Destination.firstChild.data) + 1
graph.addEdge( PHY_LINKS( linkid, Source.firstChild.data, Destination.firstChild.data, DestinationID, SourceID, float(Capacity.firstChild.data) ))


global args
args = parser.parse_args()

samplenetwork = PHY_NETWORK([], [])
for i in range(1, 100):
createnetwork(samplenetwork)
exportXmlFile(samplenetwork, args.output, 'a' )


if __name__ == "__main__":
main(sys.argv[1:])


srva@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'


The error that it give back is as above. I have the classes defined in RW1 file and I am importing the classes onto RW3 file and yet, It doesn't seem to work. I really am in need of your valuable suggestions. Thank You
 
N

Ned Batchelder

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?

File RW1:
class PHY_NETWORK:
def __init__(self, nodes, edges):
self.nodes = nodes
self.edges = edges

def addNode(self, node):
self.nodes.append( node )

def addEdge(self, edge):
self.edges.append( edge )
....


srva@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'


The error that it give back is as above. I have the classes defined in RW1 file and I am importing the classes onto RW3 file and yet, It doesn't seem to work. I really am in need of your valuable suggestions. Thank You

You've set your editor to display tabs as 4 spaces, but then you've
sometimes used tabs in your file, and sometimes 4 spaces. Look at how
your code is indented in your post: the addNode and addEdge definitions
are indented with tab characters instead of spaces, so Python thinks
they are eight spaces in. This makes them defined inside of __init__,
rather than as part of your class.

Set your editor to insert spaces when you use the Tab key, and set it to
use 4-space indents. Then find all the tab characters in your file and
replace them with the proper number of spaces.
 
G

Gary Herron

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?

It's an indentation error: In the following the three function defs for
__init__, addNode and addEdge should all be at the same indentation
level. Instead, you have the later two defined *inside* the __init__.

Gary Herron

File RW1:
class PHY_NETWORK:
def __init__(self, nodes, edges):
self.nodes = nodes
self.edges = edges

def addNode(self, node):
self.nodes.append( node )

def addEdge(self, edge):
self.edges.append( edge )

File RW3:
def createnetwork(graph):


doc = parse( args.paramFile )
noderef = []
num = 0
nodelist = doc.getElementsByTagName("node")
for node in nodelist:
noderef.append(node.getAttribute("id"))
proc = random.randint(3500, 5000)
stor = random.randint(7200, 8200)
switch = random.randint(7000, 10000)
num = num + 1
totaldemands = random.randint(1, 5)
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)))


linkid = 0
linklist = doc.getElementsByTagName("link")
for link in linklist :
linkid = linkid + 1
Source = link.getElementsByTagName("source") [0]
Destination = link.getElementsByTagName("target") [0]
Capacity = link.getElementsByTagName("capacity") [0]
SourceID = noderef.index(Source.firstChild.data) + 1
DestinationID = noderef.index(Destination.firstChild.data) + 1
graph.addEdge( PHY_LINKS( linkid, Source.firstChild.data, Destination.firstChild.data, DestinationID, SourceID, float(Capacity.firstChild.data) ))


global args
args = parser.parse_args()

samplenetwork = PHY_NETWORK([], [])
for i in range(1, 100):
createnetwork(samplenetwork)
exportXmlFile(samplenetwork, args.output, 'a' )


if __name__ == "__main__":
main(sys.argv[1:])


srva@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'


The error that it give back is as above. I have the classes defined in RW1 file and I am importing the classes onto RW3 file and yet, It doesn't seem to work. I really am in need of your valuable suggestions. Thank You
 
V

varun7rs

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?



File RW1:

class PHY_NETWORK:

def __init__(self, nodes, edges):

self.nodes = nodes

self.edges = edges



def addNode(self, node):

self.nodes.append( node )



def addEdge(self, edge):

self.edges.append( edge )



File RW3:

def createnetwork(graph):





doc = parse( args.paramFile )

noderef = []

num = 0

nodelist = doc.getElementsByTagName("node")

for node in nodelist:

noderef.append(node.getAttribute("id"))

proc = random.randint(3500, 5000)

stor = random.randint(7200, 8200)

switch = random.randint(7000, 10000)

num = num + 1

totaldemands = random.randint(1, 5)

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)))





linkid = 0

linklist = doc.getElementsByTagName("link")

for link in linklist :

linkid = linkid + 1

Source = link.getElementsByTagName("source") [0]

Destination = link.getElementsByTagName("target") [0]

Capacity = link.getElementsByTagName("capacity") [0]

SourceID = noderef.index(Source.firstChild.data) + 1

DestinationID = noderef.index(Destination.firstChild.data) + 1

graph.addEdge( PHY_LINKS( linkid, Source.firstChild.data, Destination.firstChild.data, DestinationID, SourceID, float(Capacity.firstChild.data) ))





global args

args = parser.parse_args()



samplenetwork = PHY_NETWORK([], [])

for i in range(1, 100):

createnetwork(samplenetwork)

exportXmlFile(samplenetwork, args.output, 'a' )





if __name__ == "__main__":

main(sys.argv[1:])





srva@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'





The error that it give back is as above. I have the classes defined in RW1 file and I am importing the classes onto RW3 file and yet, It doesn't seem to work. I really am in need of your valuable suggestions. Thank You

Thank you very much Ned, Rodri and Gary. I changed the settings of gedit text editor as mentioned in the Zed Shaw tutorial. I think this is causing me the problem. I'll follow your advice.
 
C

Chris Angelico

Thank you very much Ned, Rodri and Gary. I changed the settings of gedit text editor as mentioned in the Zed Shaw tutorial. I think this is causing me the problem. I'll follow your advice.

I find that there are better editors than gedit. My personal
preference is SciTE; one of its syntax highlighting features is a nice
big warning if the indentation doesn't make sense from one line to the
next. So if you switch from spaces to tabs, or mismatch indents, or
anything, it gives you this blue marker right through the faulty
indented section. Pick an editor with that kind of feature, and you'll
find your job way easier.

ChrisA
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,781
Messages
2,569,615
Members
45,297
Latest member
EngineerD

Latest Threads

Top