???
은 어떻게 작성합니까?Python 3의 메소드 데코레이터에서 super를 어떻게 호출합니까?
def ensure_finished(iterator):
try:
next(iterator)
except StopIteration:
return
else:
raise RuntimeError
def derived_generator(method):
def new_method(self, *args, **kwargs):
x = method(self, *args, **kwargs)
y = getattr(super(???, self), method.__name__)\
(*args, **kwargs)
for a, b in zip(x, y):
assert a is None and b is None
yield
ensure_finished(x)
ensure_finished(y)
return new_method
이 무엇을 달성하기 위해 거기에 있어야한다? – chepner
@chepner : 기본 반복자와 수퍼 클래스 반복자를 동시에 반복합니다. –
여기에 별도로 질문하는 것이 아니라 메소드를 정의하는 클래스에 관한 이전 질문에 대한 유스 케이스로 추가합니다 (방금 두 가지를 게시 한 것으로 나타났습니다). – chepner