我有一个Position
类,它有两个属性,Lat
和Lon
.
我希望通过实现iterator
协议来获得以下 API(但一些谷歌搜索让我更加困惑):
pos = Position(30, 50)
print pos.Latitude
> 30
print pos.Longitude
> 50
for coord in pos:
print coord
> 30
> 50
print list(pos)
> [30, 50]
您需要定义一个__iter__
方法:
class Position(object):
def __init__(self, lat, lng):
self.lat = lat
self.lng = lng
def __iter__(self):
yield self.lat
yield self.lng
pos = Position(30, 50)
print(pos.lat)
# 30
print(pos.lng)
# 50
for coord in pos:
print(coord)
# 30
# 50
print(list(pos))
# [30, 50]
PS。PEP8 风格指南建议为类保留大写的名称。遵循常规将有助于其他人更容易地理解您的代码,因此我抵制使用您的属性名称的冲动,而是将它们替换为lat
and lng
。