Binding? problem

Josh English english at
Fri Sep 10 23:08:18 CEST 2004

I may not be using the language properly, but I suspect what I have is a 
  binding problem and I'm wondering if there's a better solution than 
what I've come up with.

I'm working on a Stack based language that can import methods from 
predefined libraries. Here's what I mean.
class S:
	def __init__(self,value):
		self.value = value
	def __repr__(self):
		return '<%s>' % (self.__class__.__name__)

class Library:
	### this method refers to 'self.s' which it isn't
	### an attribute or method
	def do_this(self):
		self.s.value = 'this'

class Runner:
	def __init__(self):
		self.s = S('whock')
	def __repr__(self):
		return '<%s %s>' % (self.__class__.__name__,self.S)

	def importmethod(self,obj):
		self.do_this = obj.do_this

r = Runner()
print dir(r)

This basically all I want to do, but the last line raises an error 
because the Library class has no attribute 's'. Right now my workaround 
is to declare the do_this() method of the Library class:

	def do_this(self,parent):
		parent.s.value = 'this'

and use this in the Runner class:

	def importmethod(self,obj):
		#self.do_this =getattr(obj,'do_this')

Is there a better way to do this?

Josh English

More information about the Python-list mailing list