Martin v. Löwis schrieb: > I'm happy to announce partial 1.0; a module to implement > partial classes in Python. It is available from > > http://cheeseshop.python.org/pypi/partial/1.0 > > A partial class is a fragment of a class definition; > partial classes allow to spread the definition of > a class over several modules. One location serves > as the original definition of the class. > > To extend a class original_module.FullClass with > an additional function, one writes > > from partial import * > import original_module > > class ExtendedClass(partial, original_module.FullClass): > def additional_method(self, args): > body > more_methods > > This module is licensed under the Academic Free License v3.0. > > Please send comments and feedback to [EMAIL PROTECTED]
Nice idea. I had to apply this change to make it work, though: diff -u c:\python25\lib\site-packages\partial-1.0-py2.5.egg\partial.py.orig c:\python25\lib\site-packages\partial-1.0-py2.5.egg\partial.py --- c:\python25\lib\site-packages\partial-1.0-py2.5.egg\partial.py.orig Wed Feb 07 13:47:55 2007 +++ c:\python25\lib\site-packages\partial-1.0-py2.5.egg\partial.py Wed Feb 07 13:47:55 2007 @@ -36,7 +36,7 @@ continue if k in base.__dict__ and not hasattr(v, '__replace'): raise TypeError, "%s already has %s" % (repr(base), k) - base.__dict__[k] = v + setattr(base, k, v) # Return the original class return base otherwise I get this: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python25\lib\site-packages\partial-1.0-py2.5.egg\partial.py", line 39, in __new__ base.__dict__[k] = v TypeError: Error when calling the metaclass bases 'dictproxy' object does not support item assignment IIUC, wouldn't be 'partial.extend' or something like that be a better name for the base class? Thanks, Thomas -- http://mail.python.org/mailman/listinfo/python-list