No, it's tricky.  In order to have BloomFilter.ReadFile be the same object as bloom_filter_instance.ReadFile (or self.ReadFile in an instance method), the self.__class__.ReadFile (which is actually some kind of object representing a place-where-a-thing-may-be-stored) must be assigned into the instance's self.ReadFile.

Note also that just adding "public" to the existing cdef at the module level did not actually make it available to Python, for whatever reason; I tried that first.