public PyVariable NewInstance(PyVariableFlags flags = PyVariableFlags.Object, List <object> arguments = null) { PyVariable instance = PyVariableManager.NewVariable(flags: flags); instance.CallAssign(new PythonFunction(this.ClassName), arguments); return(instance); }
/// <summary> /// Allocates a new variable /// </summary> /// <param name="variableName">Name of the variable to add</param> /// <param name="isObject">Indicates the variable will store non-serializable data (like class instances)</param> /// <returns>The newly added variable, or null if the variable already exists</returns> public static PyVariable NewVariable(string variableName = null, PyVariableFlags flags = PyVariableFlags.Normal) { if (variableName == null) { variableName = "_var" + _variables.Count; } if (!_variables.ContainsKey(variableName)) { PyVariable variable = new PyVariable(variableName, flags: flags); _variables.Add(variableName, new WeakReference <PyVariable>(variable)); return(variable); } return(null); }
/// <summary> /// Represents a Python variable /// </summary> /// <param name="varName">Name of the variable</param> /// <param name="evalCode">Code that will be evaluated as the variable value/content</param> /// <param name="isObject">Indicates the variable will store non-serializable data</param> public PyVariable( string varName, string evalCode = null, PyVariableFlags flags = PyVariableFlags.Normal, bool keepValue = false ) { this.Name = varName; if (flags.HasFlag(PyVariableFlags.Monitor) || flags.HasFlag(PyVariableFlags.Player)) { flags |= PyVariableFlags.Object; } this.Flags = flags; if (evalCode == null && !keepValue) { evalCode = "''"; } if (!keepValue) { this.Value = evalCode; } }