Skip to content

Instantly share code, notes, and snippets.

@Pentusha
Created July 23, 2020 12:28
Show Gist options
  • Save Pentusha/a0a76ae79ea4846365d34e22ea07b716 to your computer and use it in GitHub Desktop.
Save Pentusha/a0a76ae79ea4846365d34e22ea07b716 to your computer and use it in GitHub Desktop.
from collections.abc import Iterable, Iterator
from types import GeneratorType
class OnlyIter:
def __iter__(self):
return self
class OnlyNext:
def __init__(self):
self._n = 0
def __next__(self):
if self._n < 10:
return 1
else:
raise StopIteration()
class IterNext(OnlyIter, OnlyNext):
pass
def gen():
yield 1
print(f"""
{isinstance((_ for _ in range(10)), GeneratorType)=}
{isinstance(range(10), GeneratorType)=}
{isinstance(gen(), GeneratorType)=}
{isinstance(gen(), Iterable)=}
{isinstance(gen(), Iterator)=}
{isinstance(iter(gen()), Iterable)=}
{isinstance(iter(gen()), Iterator)=}
{isinstance(range(10), Iterable)=}
{isinstance(range(10), Iterator)=}
{isinstance(iter(range(10)), Iterable)=}
{isinstance(iter(range(10)), Iterator)=}
{isinstance(OnlyNext(), Iterable)=}
{isinstance(OnlyNext(), Iterator)=}
{isinstance(OnlyIter(), Iterable)=}
{isinstance(OnlyIter(), Iterator)=}
{isinstance(IterNext(), Iterable)=}
{isinstance(IterNext(), Iterator)=}
""")
@Pentusha
Copy link
Author

Pentusha commented Jul 23, 2020

isinstance((_ for _ in range(10)), GeneratorType)=True
isinstance(range(10), GeneratorType)=False
isinstance(gen(), GeneratorType)=True
isinstance(gen(), Iterable)=True
isinstance(gen(), Iterator)=True
isinstance(iter(gen()), Iterable)=True
isinstance(iter(gen()), Iterator)=True
isinstance(range(10), Iterable)=True
isinstance(range(10), Iterator)=False
isinstance(iter(range(10)), Iterable)=True
isinstance(iter(range(10)), Iterator)=True
isinstance(OnlyNext(), Iterable)=False
isinstance(OnlyNext(), Iterator)=False
isinstance(OnlyIter(), Iterable)=True
isinstance(OnlyIter(), Iterator)=False
isinstance(IterNext(), Iterable)=True
isinstance(IterNext(), Iterator)=True

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment