On 10/18/2010 8:17 AM, Christian Heimes wrote:
Am 18.10.2010 16:35, schrieb f...@slick.airforce-one.org:
So my way of coding it is the following:

class zone(GtkDrawingArea):

   class systemOfCoordinates:
     self.xmin = -5
     self.xmax = 5
     self.ymin = -5
     self.ymax = 5

   class Curve:
     self.listOfPoints = ()

     def draw(self):
       pass

   No, that's not the way to do it.  You're not clear on the
difference between a class and an object instance.  Data
is normally stored in object instances, not classes themselves.
(You can store data in a class itself, but that's just creates a single
global variable.  That's rarely done.)

   Something like this is more usual:

class SystemOfCoordinates(object) :

    def __init__(self, xmin, xmax, ymin, ymax) :
        self.xmin = xmin
        self.xmax = xmax
        self.ymin = ymin
        self.ymax = ymax

class Curve(object) :
    ...
        

class Zone(GtkDrawingArea) :

    def __init__(self, xmin, xmax, ymin, ymax)
        self.coords = SystemOfCoordinates(xmin, xmax, ymin, ymax)

    ....

myzone = Zone(0,200,0,200) # make a Zone
...
myzone.Curve(....)
...
myzone.draw()



When you call Zone like that, an empty Zone object is created and the __init__ function of Zone is called to fill it. That function in turn calls SystemOfCoordinates, which calls the __init__ function of SystemOfCoordinates, which returns a SystemOfCoordinates object.
That's stored in "self.coords", a data attribute of the Zone object.
You get back a filled-in Zone object, which you can then use.

                                John Nagle
        
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to