Hi,
I have a problem with adding attributes to .Net classes being unstable. E.g.
from System import TimeSpan
TimeSpan.my_method = lambda self: self.TotalMinutes
ts = TimeSpan.FromHours(1)
ts.my_method()
This code will sometimes work and other times fail with the exception 'TimeSpan' object has no attribute 'my_method'.
The failure rate is variable and for some scripts/program it will work all the time while for others it will not work at all. It seems to fail a lot more often on Python 3.5 than on Python 3.4.
If I look at either dir(ts) or ts.__class__.__dict__ the method is there even when the call to my_method fails.
I have tried to look into the PythonNet code for clues, but as far as I can see the new attribute is registered by MetaType. tp_setattro without error, but the method is still not found.
What I want to ask you is
1.
Is adding new attributes to a .Net class supported behaviour or does it work more or less by accident?
2.
Any pointers to how the attribute lookup is handled for .Net classes is appreciated. Currently I have not found if and where PythonNet is involved in the actual attribute lookup process.
Cheers,
Øystein Idema Torget