Carolyn Johnston (MSNAR) wrote:
You are trying to apply C++ and C# thinking to Python. This is a
fundamental philosophical difference between the languages. Python
doesn't care what the object IS. Python only cares what it EXPOSES. If
it has a GetName() method, you can call it, no matter what the object
ancestry was. -- tim
Well, C++ was my first language -- but I am a huge fan of Python and
IronPython. Since I've dived into the deep end philosophically, I may as well
push it a bit further.
One of the most useful aspects of IronPython for me is the way that I can use IronPython as a loosely typed test environment for .NET classes that I've built in C#. Suppose I have a class B which is a subclass of A, which both define a function f(x). Suppose I have an object of class B on which (for some purely hypothetical reason) I want to run A.f(x) rather than B.f(x).
Actually the example pattern is pretty much how you do it.
Suppose you have an object 'a', which is an instance of a class that
inherits from (or implements) both A and B.
You can explicitly call the A version using:
A.f(a, x)
Or the B version:
B.f(a, x)
As you are calling the unbound method (on the class or interface), you
pass in the instance as the first argument.
Michael
This is clearly at the interface of .NET design and Pythonian antiObjectian
philosophy. Here's my question: is it doable within IronPython, or is it not?
And if so, how?
Thanks,
:) Carolyn
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
--
http://www.ironpythoninaction.com/
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com