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