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

Gary Herron gary.herron at islandtraining.com
Sat May 17 20:16:46 EDT 2014


On 05/17/2014 04:56 PM, 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?

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




More information about the Python-list mailing list