/// <summary> /// Attach the PyObject to a new PySharp object /// </summary> /// <param name="pySharp">New PySharp object</param> /// <returns>A new copy of itself</returns> public PyObject Attach(PySharp pySharp) { if (_newReference) { Py.Py_IncRef(_pyReference); } return(new PyObject(pySharp, _pyReference, _newReference)); }
/// <summary> /// Create a PyObject /// </summary> /// <param name="pySharp">The main PySharp object</param> /// <param name="pyReference">The Python Reference</param> /// <param name="newReference">Is this a new reference? (e.g. did the reference counter get increased?)</param> internal PyObject(PySharp pySharp, IntPtr pyReference, bool newReference) { _pyReference = pyReference; _newReference = newReference; _pySharp = pySharp; if (pySharp != null && _newReference) { pySharp.AddReference(this); } HandlePythonError(); if (!IsValid) { return; } // Only build up cache if it actually a valid object _attributeCache = new Dictionary <string, PyObject>(); _dictionaryCache = new Dictionary <PyObject, PyObject>(); _itemCache = new Dictionary <int, PyObject>(); }