- Notifications
You must be signed in to change notification settings - Fork749
Closed
Description
Environment
- Pythonnet version: 3.0.0-rc4
- Python version: 3.8
- Operating System: Windows11
- .NET Runtime: .NET Framework 4.8
Details
With the following code in C#, when a Python class hasgetitem() defined, it will be converted to an array (System.Object[]) in managed code:
List lst = new List();
using (Py.GIL())
{
using (var scope = Py.CreateScope())
{
scope.Set("lst", lst);
string text = @"
class DBRow:
definit(self, row, col_names):
self.row = row
self.col_names = col_names
def __getitem__(self, key): if isinstance(key, int): return self.row[key] if key in self.col_names: index = self.col_names.index(key) return self.row[index] else: return None
col_names=['col1', 'col2', 'col3']
row=[1, '2', 3]
r = DBRow(row, col_names)
lst.Add(r)
";
var code = PythonEngine.Compile(text); scope.Execute(code); } } string str = lst[0].GetType().ToString();
Metadata
Metadata
Assignees
Labels
No labels