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 |