It's a neat approach, but I can anyone give explicit reasons as to why using a function instance variable is "bad"?
I do agree that namespace collision is certainly an issue, but it's traditionally resolved by mild name mangling (again, see Python).
In my opinion, the advantages of a less clever (read easily understood) public implementation outweigh the disadvantages.