On 2/20/07, Larry Hastings <[EMAIL PROTECTED]> wrote: > # the easy way to define a "subclass" of record > def Point(x, y): > return record(x = x, y = y) > > # you can use hack-y features to make your "subclasses" more swell > def Point(x, y): > x = record(x = x, y = y) > # a hack to print the name "Point" instead of "record" > x.__classname__ = "Point" > # a hack to impose an ordering on the repr() display > x.__names__ = ("x", "y") > return x > > p = Point(3, 5) > q = Point(2, y=5) > r = Point(y=2, x=4) > print p, q, r > > # test pickling > import pickle > pikl = pickle.dumps(p) > pp = pickle.loads(pikl) > print pp > print pp == p > > # test that the output repr works to construct > s = repr(p) > print repr(s) > peval = eval(s) > print peval > print p == peval > ------ > > Yeah, I considered using __slots__, but that was gonna take too long.
Here's a simple implementation using __slots__: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502237 And you don't have to hack anything to get good help() and a nice repr(). Declare a simple class for your type and you're ready to go:: >>> class Point(Record): ... __slots__ = 'x', 'y' ... >>> Point(3, 4) Point(x=3, y=4) STeVe -- I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a tiny blip on the distant coast of sanity. --- Bucky Katt, Get Fuzzy _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com