Code Monkey home page Code Monkey logo

zope-chipy's Introduction

Zope Interfaces

Presented at ChiPy on 4/12/2012

Zope Interfaces provide a way for Python objects to promise to provide certain attributes and methods. Without losing the benefits of duck-typing this can add a bit of structure and also doubles as runnable documentation. For example, an application developer might point to an interface that can be implemented to create a plugin, and the plugin developer can verify at runtime that he or she has properly implemented this interface. Furthermore, the metadata about what interfaces an object provides can be used to wire up dependencies between objects at runtime or configuration time with confidence that the relationships are compatible.

For a simple example of the mechanics of creating and implementing interfaces, see expression.py. Zope interfaces can also specify invariants, and binary_search.py shows this in action. Finally to discover what metadata zope interfaces are adding to objects to provide all of this behavior, check out class_diff.py. Some of these slides have strange strings in them that I used to generate the original set of slides, so just ignore that.

The full set of slides as presented are available here but they probably aren't terribly useful.

More Information

Other projects sharing ideas with zope.interface

zope-chipy's People

Contributors

thatmattbone avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.