diff --git a/python/mujoco/specs.cc b/python/mujoco/specs.cc index 0f7a4c2a..8853430e 100644 --- a/python/mujoco/specs.cc +++ b/python/mujoco/specs.cc @@ -393,6 +393,9 @@ PYBIND11_MODULE(_specs, m) { mjSpec.def("copy", [](const MjSpec& self) -> MjSpec { return MjSpec(self); }); + mjSpec.def_property_readonly("_address", [](const MjSpec& self) { + return reinterpret_cast(self.ptr); + }); mjSpec.def_property( "copy_during_attach", [](MjSpec& self) { diff --git a/python/mujoco/specs_test.py b/python/mujoco/specs_test.py index a958e595..e400347e 100644 --- a/python/mujoco/specs_test.py +++ b/python/mujoco/specs_test.py @@ -1159,5 +1159,15 @@ class SpecsTest(absltest.TestCase): ): model_spec.compile() + def test_address(self): + spec1 = mujoco.MjSpec() + spec2 = mujoco.MjSpec() + spec3 = spec1.copy() + + self.assertGreater(spec1._address, 0) + self.assertGreater(spec2._address, 0) + self.assertGreater(spec3._address, 0) + self.assertLen({spec1._address, spec2._address, spec3._address}, 3) + if __name__ == '__main__': absltest.main()