Пример #1
0
        /// <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));
        }
Пример #2
0
        /// <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>();
        }