object inheritance and default values

Ron Adam rrr at ronadam.com
Fri Oct 14 14:52:06 EDT 2005


I'm trying to implement simple svg style colored complex objects in 
tkinter and want to be able to inherit default values from other 
previously defined objects.

I want to something roughly similar to ...

    class shape(object):
         def __init__(self, **kwds):
              # set a bunch of general defaults here.
              self.__dict__.update(kwds)
	def draw(self, x=0, y=0, scale=1.0):
              # draw the object

    hello = shape(text='hello')
    redhello = hello(color='red')
    largeredhello = redhello(size=100)
    largeredhiya = largeredhello(text='Hiya!')
    largeredhiya.draw(c, 20, 50)


I think this will need to require __new__ or some other way to do it. 
But I'm not use how to get this kind of behavior.  Maybe the simplest 
way is to call a method.

    redhello = hello.makenew( color='red' )

But I want to be able to have all the objects access alike?

Hmmm..  I think maybe if if don't ever access shape (or Shape) directly 
in my data structure, then __new__ would work?  So my first default 
object should be an instance of shape with a __new__ method to create 
more?  Ok, off to try it.  But any comments will be welcome.

Cheers,
    Ron





More information about the Python-list mailing list