On Sep 29, 8:06 am, Chris Rebert <c...@rebertia.com> wrote: > Try this: > > def trial(): > class Foo(object): > def __init__(self): > print("Hello, world!") > Foo() > trial()
While this will display "Hello, world!" in the way required, with a slight adjustment you end up with something potentially a little more useful: def trial(): class Foo(object): def __init__(self): print("Hello, world!") return Foo() myfoo = trial() You'll see the same behaviour, but now myfoo refers to the Foo() object that was created inside trial. This makes trial an object factory. If you return an uninstantiated Foo instead: def trial(): class Foo(object): def __init__(self): print("Hello, world!") return Foo MyFoo = trial() foo = MyFoo() Then trial is a class factory, creating and returning a class. Factories can be handy if you're wanting to create dynamic classes based on run time information. def reader_factory(format='json'): class Reader(object): def __init__(self, file): self.file = file if format == 'json': def process(self): print 'json processing goes here' elif format == 'html': def process(self): print 'html processing goes here' return Reader >>> JSONReader = reader_factory('json') >>> j = JSONReader('file1') >>> j.process() json processing goes here This is a trivial example which would probably be better handled by subclasses, but is meant to be indicative of what's possible. -- http://mail.python.org/mailman/listinfo/python-list