[Xapian-discuss] Using a subclass of MatchSpy in Python bindings

Olly Betts olly at survex.com
Wed Dec 1 21:52:16 GMT 2010


On Wed, Dec 01, 2010 at 01:18:40PM +0000, Doctor Munchkin wrote:
> >>> class MyMatchSpy(xapian.MatchSpy):
> ...     def __init__(self):
> ...             pass
> ...     def __call__(self, *args, **kw):
> ...             print "called with", args, kw
> ...
> >>> ms = MyMatchSpy()
> >>> enquire = xapian.Enquire(database)
> >>> enquire.add_matchspy(ms)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/usr/lib/python2.6/dist-packages/xapian/__init__.py", line
> 6920, in _enquire_match_spy_add
>     _enquire_add_matchspy_orig(self, decider)
> TypeError: in method 'Enquire_add_matchspy', argument 2 of type
> 'Xapian::MatchSpy *'
> 
> Am I missing something obvious here, or is swig misbehaving? The above
> works if ms is an instance of xapian.ValueCountMatchSpy, but I need to
> implement something different to this.

I think you need to call the base class constructor in your constructor:

    def __init__(self):
        xapian.MatchSpy.__init__(self)

Cheers,
    Olly



More information about the Xapian-discuss mailing list