labs. bfloch.com/script/Archives for: August 2010, 20
private.  
/script /output
/links
/about



 »    
10/Aug/20
python

 
» Python Factory

Found this at http://ubuntuforums.org/showthread.php?t=749534

Code:

import sys
 
class FooBase(object):
    def __new__(cls, url, *arguments, **keyword):
        for subclass in FooBase.__subclasses__():
            if url.startswith(subclass.prefix):
                return super(cls, subclass).__new__(subclass, *arguments, **keyword)
        raise Exception, 'Prefix not supported'
 
class HttpFoo(FooBase):
    prefix = 'http'
 
class FtpFoo(FooBase):
    prefix = 'ftp'
 
if __name__ == '__main__':
    foo = FooBase('http://abc.com')
    print foo.prefix
 
    foo = FooBase('ftp://abc.com')
    print foo.prefix
 
    try:
        foo = FooBase('ssh://abc.com')
    except Exception, message:
        print message
..................................................