Skip to content

How to Compare Reference Equality of Value Objects in pythonnet Without Using Obsolete PyObject.Handle #2603

Description

@ljnober

When working with value objects converted from pybind11, some objects override the equality operator (==). In such cases, I need to compare objects based on reference equality instead of value equality. In Python, this is typically done using id(obj) or the is operator to check if two variables point to the same object .

In pythonnet, I attempted to use PyObject.Handle for this purpose, but it is marked as obsolete . What is the recommended way to achieve reference equality comparisons in pythonnet now? For example:

  • Can Python’s built-in id() function be used directly?
  • Are there alternative APIs in pythonnet to replace PyObject.Handle?
    This is critical for ensuring correct comparisons of objects where value-based equality is intentionally overridden.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions