Metaclass for subclassable extension types
C Python C++
Latest commit 84e2e6a Feb 22, 2017 @hannosch hannosch vb [ci skip]
Permalink
Failed to load latest commit information.
src Remove unused and dangerous macros. Feb 22, 2017
.gitignore Tweak ignores and update manifest. Jan 18, 2017
.travis.yml prepare Feb 2, 2017
CHANGES.rst vb [ci skip] Feb 22, 2017
COPYRIGHT.txt Comply with repository policy. Apr 7, 2010
LICENSE.txt
MANIFEST.in
README.rst
bootstrap.py Update to latest bootstrap. Dec 18, 2014
buildout.cfg Tweak ignores and update manifest. Jan 18, 2017
setup.cfg Prefer zope.testrunner to run tests. Jan 18, 2017
setup.py vb [ci skip] Feb 22, 2017
tox.ini

README.rst

ExtensionClass and ExtensionClass-related packages

ExtensionClass

This package provides a metaclass that allows classes implemented in extension modules to be subclassed in Python. Unless you need ExtensionClasses for legacy applications (e.g. Zope 2), you probably want to use Python's new-style classes (available since Python 2.2).

ComputedAttribute

This package provides a way to attach attributes to an ExtensionClass or instance that are computed by calling a callable. This works very much like property known from new-style classes, except that a ComputedAttribute can also be attached to an instance and that it honours ExtensionClass semantics (which is useful for retaining Acquisition wrappers, for example).

MethodObject

This package lets you attach additional "methods" to ExtensionClasses. These "methods" are actually implemented by subclassing the MethodObject.Method class and implementing the __call__ method there. Instances of those classes will be bound to the instances they're attached to and will receive that instance object as a first parameter (after self).