> it would appear that that the call to kernel() in right_kernel() uses
> the version of kernel() defined for dense rational matrices (as
> perhaps it should), and not the modified version of left_kernel()
> nearby (as the code locally might suggest one to expect).

The issue is with the kernel = left_kernel line in the subclass.  This  
is a known... "feature"... of Python.

If you have:

class A:
     def foo():
         return "A"
     bar = foo

class B(A):
     def foo():
         return "B"

Then B().foo() will return "B" but B().bar() will return "A".  The bar  
= foo line is "early binding" -- it doesn't do what you expect with  
respect to inheritance.

The solution?  def kernel(...): return left_kernel(...).  Shitty, but  
that's Python for you.

Nick

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to