pattr オブジェクトは、バインドされない(unbound)モードと、バインドされる(bound)モードの2つのモードで動作します。バインドされない pattr オブジェクトは、単独で動作するもので、ここでは解説しません。しかし、バインドされる pattr オブジェクト (および、本質的に複数のバインドを持つ(multiply bound) autopattr オブジェクト)に関しては、多少説明を要します。
他のオブジェクトのデータとバインドされた場合、pattrはそのオブジェクトが pattr APIをサポートするかどうかを判断するために、問い合わせを行ないます(これは、 pattr と対象のオブジェクトとの間でのデータの送受信を使う単純なものです)。ターゲットのオブジェクトがこの API をサポートしていると仮定すると、何かの状態の変化が生じた場合にそれを pattr に通知するのはターゲットオブジェクトの責任です。pattrオブジェクトは、効率の点を考え、自動的にターゲットオブジェクトに問い合わせを行なうことはありません。pattrstorageオブジェクトも、その状態やインターフェイスを更新するために、この通知を使います。
pattr システムのための API は、実際、非常にシンプルなもので、たいていの Max オブジェクトは、ほとんど問題なく pattr 互換にするために速やかに改造することができます。しかし、非常に複雑な状態情報を保持しているオブジェクトの開発者は、アトリビュートの使用を考慮する必要があります。アトリビュートは、pattr 認識そのものです。とはいえ、アトリビュートの使用のためには、若干の特別な準備とオブジェクト定義の変更が必要になります。