You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Can not call method in parent class, when using nested classes with inheritance #1420
I.e. classes-in-classes are not handled properly in Pythonnet.
Even when applying the workaround mentioned in the #1414 issue there are still problems related to the inheritance.
Namely, I can not call a method declared on the baseclass, on an instance of the nested child class.
The following code demonstrates the issue
namespacepythonnet_testing{publicclassBar{publicstringMethodInBaseClass(){return"hello";}publicclassHej:Bar{}}publicclassFoo{publicBarBar;publicstaticFooCreate(){Foof=new();f.Bar=newBar.Hej();returnf;}}classProgram{staticvoidMain(string[]args){varpyCode=@"import pythonnet_testingf = pythonnet_testing.Foo.Create()print('Trying to access member of nested subclass')_ = pythonnet_testing.Bar # NOTE: The python code crashes unless this explicit reference to the Bar class is usedprint(f'Bar: {f.Bar}')print(f'Method call: {f.Bar.MethodInBaseClass()}') ";PythonEngine.Initialize();using(Py.GIL()){PythonEngine.Exec(pyCode);}}}
Running this gives the following error message
Trying to access member of nested subclass
Bar: pythonnet_testing.Bar+Hej
Unhandled exception. Python.Runtime.PythonException: AttributeError : 'Hej' object has no attribute 'MethodInBaseClass'
[' File "<string>", line 7, in <module>\n'] at Python.Runtime.PythonException.ThrowIfIsNull(BorrowedReference reference)
at Python.Runtime.PythonEngine.RunString(String code, Nullable`1 globals, Nullable`1 locals, RunFlagType flag)
In order to call the MethodInBaseClass method on the child class, I must explicitly re-define it like this:
Activity
lostmsu commentedon Sep 23, 2021
I believe #1487 should have fixed the issue for 3.0, but we need a test.
added a regression test for pythonnet#1420
added a regression test for #1420 (#1652)