【发布时间】:2022-12-22 08:57:50
【问题描述】:
我暂时停止使用 python(使用 Go 作弊),但现在我有一段代码要写,但我遇到了一些奇怪的事情。
假设我有两个简单的类:
@dataclass
class Item():
Name: str
Valie: float
class Registry():
items = []
def __init__(self):
# load some items from external source, etc
""" find an element in an array or return None """
def find(self, name: str) -> Item:
for i in self.Items:
if i.Name = name: # items are unique,
return i
return None # ignore type
没有这个 #ignore type 得到警告 Expression of type "None" cannot be assigned to return type "Item"。好的,我明白为什么。但这是正确的方法还是有更好的更“pythonic”的方法来解决这个问题?即,如果它不在列表中,则不返回任何内容。
在“另一边”是这样的:
item = registry.find(name)
if item != None:
doSomething()
附言我只想补充一点,我一生中的大部分时间都是用 Python 2.x 编写的,直到最近我才切换到 3.x(目前是 10)
【问题讨论】: