# What you can bind Registration is ordinary Python code. The saved lessons demonstrate three useful inputs: a class Melder can construct, a function that supplies a value, and an instance you already constructed. Registration takes the Python object: `book.bind(spell=Greeter, existence="unique")`. Resolution uses its registered name: `conduit.meld("Greeter")`. Function spells use their function names, such as `conduit.meld("make_settings")`. A prebuilt instance uses its type's name, such as `conduit.meld("AlreadyBuilt")`; the local variable holding that instance is not its registered name. ## Pick the form that expresses your ownership Use the class examples when you want to study construction and instance lifetimes. Use the function and prebuilt-instance examples when a value comes from application setup you already control. Read their assertions before assuming that all registration forms have interchangeable lifetime behavior. ## Bind an existing object under a Protocol An existing object uses `existence="unique"`. When you supply a Protocol as `spellframe`, Melder checks the actual object during bind: public members defined directly on that Protocol must exist, and callable members must be callable. An incompatible object raises `TypeError` before registration. Compatible objects can be injected into consumers, preserving the original reference. This is a limited member check, not full static type checking. It does not check inherited Protocol declarations, annotation-only data fields or method signatures. Members supplied by the instance itself can satisfy the check. Factory bindings retain their separate callable contract. ## Register a group of services The collection examples show both a normal loop over registrations and a prebuilt registry bound as one value. These answer different questions: registering several services exposes several graph entries; supplying a registry exposes the collection your application already owns. The linked lessons contain the full classes, setup, and checks. Work through one form at a time, then use the capstone to put them together. ## The workflow in code These are the core steps from the saved example. Use its complete linked script for all class definitions and setup. ```{literalinclude} ../downloads/01_beginner/03_bind_functions_and_instances.py :language: python :pyobject: main :linenos: ``` ## Runnable examples - [Bind functions and instances](../examples/beginner/03-bind-functions-and-instances.md) — Beginner 03 - [Bind many at once](../examples/beginner/11-bind-many-at-once.md) — Beginner 11 - [Factory functions](../examples/beginner/32-factory-functions.md) — Beginner 32 - [Prebuilt registry](../examples/beginner/33-prebuilt-registry.md) — Beginner 33 [All beginner examples](../examples/beginner/index.md) · [Level contents](index.md) · [Full contents](../contents.md) [Canonical page source](https://github.com/Synaptic724/melder/blob/90d52e0a12cb0743d62568d5a19ce954a54443bc/docs/beginner/registration.md)