Python’s Native Protocols¶
The only validation for these is by EAFP (duck-typing).
Many are now encapsulated by ABCs:
http://docs.python.org/dev/library/collections.abc.html
Most of these are invoked in a special way when using builtins:
http://docs.python.org/dev/reference/datamodel.html#special-method-names
Thread: [Python-ideas] __iter__ implies __contains__ | http://mail.python.org/pipermail/python-ideas/2011-October/012023.html | http://mail.python.org/pipermail/python-ideas/2011-October/012029.html | http://mail.python.org/pipermail/python-ideas/2011-October/012037.html | http://mail.python.org/pipermail/python-ideas/2011-October/012043.html | http://mail.python.org/pipermail/python-ideas/2011-October/012050.html | http://mail.python.org/pipermail/python-ideas/2011-October/012053.html | http://mail.python.org/pipermail/python-ideas/2011-October/012055.html | http://mail.python.org/pipermail/python-ideas/2011-October/012061.html
object protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
repr protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
object.__repr__()
str protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
comparison protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
object.__cmp__(other)
hash protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
object.__hash__()
bool protocol¶
http://docs.python.org/reference/datamodel.html#basic-customization
object.__nonzero__()
attribute access protocol¶
http://docs.python.org/reference/datamodel.html#customizing-attribute-access
descriptor protocol¶
http://docs.python.org/reference/datamodel.html#implementing-descriptors
type protocol¶
http://docs.python.org/reference/datamodel.html#customizing-instance-and-subclass-checks
callable protocol¶
http://docs.python.org/reference/datamodel.html#emulating-callable-objects
object.__call__([args...])
sequence protocol¶
http://docs.python.org/reference/datamodel.html#emulating-container-types
old-style iteration protocol¶
iterator protocol¶
object.__iter__()
iterable protocol¶
http://docs.python.org/library/stdtypes.html#typeiter
context manager protocol¶
http://docs.python.org/reference/datamodel.html#with-statement-context-managers
file protocol¶
pickle protocol¶
http://docs.python.org/library/pickle.html#the-pickle-protocol
copy protocol¶
http://docs.python.org/library/copy.html http://docs.python.org/library/pickle.html#id16