On Sun, Aug 16, 2009 at 23:45, Chad Dombrova<[email protected]> wrote:
>
> MObjectHandle.hashCode() or pymel.nodetypes.DependNode.__hash__()
>
> keep in mind this unique id is only valid while the scene is open.
> close it and reopen and all the id's will change. however, with some
> clever usage of dictionaries and callbacks i'm sure something more
> persistent could be managed.

Two MObjectHandles which refer to the same internal object are
guaranteed to return the same hash code, but that code is not
guaranteed to be unique. As the name implies, it is a hash code and
there may be multiple objects which return the same code.

The purpose of the hashCode() method is to make it possible for
MObjectHandles to be used in Python dictionaries. When an object is
looked up in a dictionary, Python first uses the value returned by the
object's __hash__() method to quickly narrow down the range of
choices, then it steps through each of the objects which have the same
hash code, doing a more in-depth comparison to find the one which
matches the object being looked up. By reimplementing MObjectHandle's
__hash__() method to use hashCode() you can create MObjectHandles
which work as dictionary keys.

-- 
-deane

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---

Reply via email to