View Single Post
  #2  
Old 07-23-2007, 11:55 AM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
Hi,

Please use the [code][/code] tags when posting code. It will preserve your tabs.

The <node>.remove() command will delete the object from the Vizard engine, however the Python object will still exist. If you want to remove the node from Vizard and remove the reference to it, then you can create a wrapper function that does it for you. However, if some other code is referencing the object, then that reference will continue to exist. Example:
Code:
class Parent:
	def __init__(self):
		print "init from parent"

	def duit(self,duit):
		self.salary = self.salary + duit
		return self.salary

	def remove(self):
		self.obj.remove()

class Child(Parent):
	def __init__(self):
		Parent.__init__(self)
		print "init from child"

		self.obj = viz.add('duck.cfg')
		self.salary = 100

class World:
	def __init__(self):
		self.c = Child()
		self.final = self.c.duit(50000)
		print self.final

	def remove(self):
		self.c.remove()
		del self.c

w=World()
viz.go()


#Print value of w.c
print w.c

#Save referenc to w.c
c_ref = w.c

#Remove child
w.remove()

#Try printing value of w.c
try:
	print w.c
except AttributeError:
	print 'w.c does not exist'

#Reference to child still exists
print c_ref
Reply With Quote