[Python.NET] "Incorrect" behavior of inheriting from class which is inherited from .Net class
Denis Akhiyarov
denis.akhiyarov at gmail.com
Thu Aug 25 11:15:37 EDT 2016
*Hi Hansong, *
I noticed that you (@hhspiny) released your WPF adventures with pythonnet
on github, but without a license:
https://github.com/hhspiny/WPFPy
Can you please indicate the license?
*Hi Tony,*
Please let me know how this subclassing (.NET -> Python -> Python) would
work?
*Thanks,*
*Denis*
On Mon, Apr 11, 2016 at 2:04 AM, Tony Roberts <tony at pyxll.com> wrote:
> Hi,
>
> yes, deriving from a python class in Python that itself is derived from a
> .net class doesn't work. Apologies, if I'd known that was what you were
> doing I could have saved you some time by telling you that earlier.
>
> AFAIK this hasn't been created as an issue in github, so please if you
> could do that that would be helpful. It's probably not that hard to make
> work, but it's not something I've got time to look at myself right now I'm
> afraid. If anyone else wants to have a go and needs pointing in the right
> direction let me know.
>
> Tony
> On Mon, Apr 11, 2016 at 3:41 AM Hansong Huang <hhspiny at live.com> wrote:
>
>> Hello,
>>
>> This is related to previous investigation of inheriting from .NET
>> interface class to create WPF MVVM structure. As now I believe it has
>> nothing to do with interface class, but instead caused by inheriting from
>> .Net class overall.
>>
>> please see the following code
>>
>> import clr, System
>> class baseNA(System.Random):
>> __namespace__ = "BaseNA"
>> def __init__(self):
>> super(baseNA,self).__init__()
>> # @clr.clrmethod(System.String,[])
>> def ToString(self):
>> return "string"
>>
>> class baseNB(baseNA):
>> __namespace__ = "BaseNB"
>> def __init__(self):
>> super(baseNB,self).__init__()
>> bna = baseNA()
>> print bna.ToString()
>> print bna._Random__ToString()
>> bnb = baseNB()
>> print bnb.ToString()
>> print bnb._baseNA__ToString()
>> print bnb._Random__ToString()
>>
>>
>> This produces the following output
>> string
>> BaseNA.baseNA
>> BaseNB.baseNB
>> BaseNB.baseNB
>> BaseNB.baseNB
>>
>> as you see, while baseNA -- the first level inherited class works fine.
>> ToString() overrides System.Random.ToString()
>>
>> But baseNB inherited from baseNA did not inherit ToString() method from
>> baseNA, but rather inherited from System.Random.
>>
>> Not sure if it is a bug in python.net or was intended.
>>
>> regards,
>>
>> Hansong
>>
>>
>>
>>
>> _________________________________________________
>> Python.NET mailing list - PythonDotNet at python.org
>> https://mail.python.org/mailman/listinfo/pythondotnet
>
>
> _________________________________________________
> Python.NET mailing list - PythonDotNet at python.org
> https://mail.python.org/mailman/listinfo/pythondotnet
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20160825/f24ec8b0/attachment-0001.html>
More information about the PythonDotNet
mailing list