【发布时间】:2021-08-20 10:25:48
【问题描述】:
我这样定义一个可迭代对象:
class MyClass:
def __init__(self, arg):
self.arg = arg
def __iter__(self):
for item in self.arg:
yield item
很遗憾,arg 可能是 None。我想知道如何在风格上抓住这一点。我能做到:
def __iter__(self):
if self.arg is None:
return
for item in self.arg:
yield item
但这不符合python的EAFP风格。也许这样:
def __iter__(self):
try:
for item in self.arg:
yield item
except TypeError:
return
但这对我来说似乎很危险。实际上,我的循环涉及更多,我不希望任何其他 TypeErrors 被忽视。我可以将 try-block 限制在循环的头部吗?
【问题讨论】:
标签: python for-loop try-catch iterable