"""
This module implements Obj-C-style categories for classes for Python
Copyright 2009 Ulrik Sverdrup <ulrik.sverdrup@gmail.com>
License: Public domain
"""

def Category(toclass, clobber=False):
    """Return a class decorator that implements the decorated class'
    methods as a Category on the class @toclass
    if @clobber is not allowed, AttributeError will be raised when
    the decorated class already contains the same attribute.
    """

def decorator(cls):
    skip = set(('__dict__', '__module__', '__weakref__', '__doc__'))
for attr in cls.__dict__:
    if attr in toclass.__dict__:
        if attr in skip:
            continue
if not clobber:
    raise AttributeError('Category cannot override %s' % attr)
setattr(toclass, attr, cls.__dict__[attr])
return cls
return decorator
Как сделать категории Obj-C в Python?