Given the generator object, is it possible to check if it was created by this generator? Perhaps itβs better said, is it possible to verify that we have a βtypeβ of generator? Since generator objects are of type generator, testing with typeor isinstancewill not work.
Consider the code below:
>>> def gen1():
... yield 1
...
>>> def gen2():
... yield 2
...
>>> g1 = gen1()
>>> g2 = gen2()
>>>
>>> def do_something(f):
...
...
...
... print(f)
...
>>> do_something(g1)
<generator object gen1 at 0x100dcb370>
>>> do_something(g2)
<generator object gen2 at 0x100dcb3c0>
Note that if I were to implement the generator using the iterator class instead, then it would work as typeand isinstancesince the generated objects would be of the type indicated by the iterator class:
>>> class gen():
... def __next__(self):
... return 1
...
>>> f = gen()
>>> type(f) is gen
True
>>> isinstance(f, gen)
True
( , , , ) , yield?