2
我一直在使用Python幾年開關,但對於複雜的面向對象的編程並不多,我很少使用字典作爲結構。對於這個應用程序,我試圖在地圖上建立一個位於地理位置的航點的數據庫。嵌套(2-D)字典的類迭代器?
因此,我想創建一個能夠訪問2-D字典結構並執行各種方法的容器類。爲了可用性和可讀性,我試圖實現各種容器方法,但是我很難添加類的功能。
我的容器類
# Python standard libraries
from collections import defaultdict
from GeoWayPt import *
#===========================================================================
class GeoWayPtData():
""" Geodetic waypoint data container """
# Nested dictionary structure for equipment/waypoints
def equip_dict(self): return defaultdict(self.waypt_dict)
def waypt_dict(self): return GeoWayPt
def __init__(self):
""" Constructor """
#
self.AvailEquipIndex = 0
# Nested dictionary of equipment with waypoints
#
# First key for each equipment.
# Second key for each waypoint.
# [EquipNum][WayptNum]
self.dictWayPts = defaultdict(self.equip_dict)
的一個片段,我不知道如何實現ITER和next方法,以達到在下面的測試腳本的循環功能。
部分我的數據類
class GeoWayPt():
""" Geodetic waypoint container class """
def __init__(self):
""" Constructor """
# Equipment ID (integer, starting at 0)
self.ID = 0
# Equipment class (string description)
self.EquipClassStr = ''
我的測試腳本的
from GeoWayPt import *
from GeoWayPtData import *
# 2-D data structure
data = GeoWayPtData()
waypt = GeoWayPt()
waypt.ID = 0
waypt.EquipClassStr = "foo"
# Add equipment 0
data.AddEquip(waypt)
waypt = GeoWayPt()
waypt.ID = 0
waypt.EquipClassStr = "bar"
# Add waypoint to equipment 0
data.AddWayPt(0, waypt)
waypt = GeoWayPt()
waypt.ID = 1
waypt.EquipClassStr = "can"
# Add equipment 1
data.AddEquip(waypt)
waypt = GeoWayPt()
waypt.ID = 1
waypt.EquipClassStr = "haz"
# Add waypoint to equipment 1
data.AddWayPt(1, waypt)
waypt = GeoWayPt()
waypt.ID = 1
waypt.EquipClassStr = "sum"
# Add another waypoint to equipment 1
data.AddWayPt(1, waypt)
# Functionality I'd like:
for equip in data:
for waypt in equip:
print waypt.ID, waypt.EquipClassStr
到底是什麼它要遍歷? – 2011-12-16 20:55:59