Adding new attributes to .Net classes is unstable
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
participants (1)
-
Torget Øystein Idema