[python-win32] cannot create 'NoneType' instances

Larry Bates larry.bates at websafe.com
Sun Aug 31 21:01:16 CEST 2008


Arun Kumar wrote:
> hi,
> I'm new to python as well as pywin. I'm having trouble with the 
> following code:
> 
> _ListenerBase = win32com.client.getevents("SAPI.SpSharedRecoContext")
> class _ListenerCallback(_ListenerBase):
> 
>    """Created to fire events upon speech recognition.  Instances of this
>    class automatically die when their listener loses a reference to
>    its grammar.  TODO: we may need to call self.close() to release the
>    COM object, and we should probably make goaway() a method of self
>    instead of letting people do it for us.
>    """
> 
>    def __init__(self, oobj, listener, callback):
>        _ListenerBase.__init__(self, oobj)
>        self._listener = listener
>        self._callback = callback
> 
>    def OnRecognition(self, _1, _2, _3, Result):
>        # When our listener stops listening, it's supposed to kill this
>        # object.  But COM can be funky, and we may have to call close()
>        # before the object will die.
>        if self._listener and not self._listener.islistening():
>            self.close()
>            self._listener = None
> 
>        if self._callback and self._listener:
>            newResult = win32com.client.Dispatch(Result)
>            phrase = newResult.PhraseInfo.GetText()
>            self._callback(phrase, self._listener)
> 
> The error I get is:
> class _ListenerCallback(_ListenerBase):
> TypeError: Error when calling the metaclass bases
>    cannot create 'NoneType' instances
> 
> I went through the list archives and found a couple of messages 
> regarding this, so I tried the following in an interactive shell:
>  >>> lb = win32com.client.getevents("SAPI.SpSharedRecoContext")
>  >>> type(lb)
> <type 'NoneType'>
> 
> Can anyone point me in the right direction? Why is getevents returning a 
> NoneType? How can I fix it?
> 
> Thanks,
> Arun

Sounds like oobj is None when you try to call the __init__ method of
_ListenerBase.

-Larry



More information about the python-win32 mailing list