In article <[EMAIL PROTECTED]>, Nick Craig-Wood <[EMAIL PROTECTED]> wrote: > My favourite mistake when I made the transition was calling methods > without parentheses. In perl it is common to call methods without > parentheses - in python this does absolutely nothing! pychecker does > warn about it though. > > perl -> $object->method > python -> object.method()
On the other hand, leaving out the parens returns the function itself, which you can then call later. I've often used this to create data-driven logic. For example, I'm currently working on some code that marshals objects of various types to a wire protocol. I've got something like: encoders = { SM_INT: write_int, SM_SHORT: write_short, SM_FLOAT: write_float, # and so on } class AnyVal: def __init__(self, type, value): self.type = type self.value = value def write_anyval(any): encoders[any.type](any.value) The fact that functions are objects which can be assigned and stored in containers makes this easy to do. -- http://mail.python.org/mailman/listinfo/python-list