classes and __iter__

david.garvey at gmail.com david.garvey at gmail.com
Mon Jan 9 18:30:24 EST 2012


Chris,

Both a list and dict are both iterable.  I get a python dictionary object
of both iterables.;) It is nice... but I don't know if this is good form?
Should I be asking the duck question here?
>>> print helo.__dict__
{'keylist': [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
164, 165, 166, 167, 168, 169, 170, 171, 172, 999], 'd': {0: 'CMD_NONE', 1:
'CMD_ADD_HOST_COMMENT', 2: 'CMD_DEL_HOST_COMMENT', 3:
'CMD_ADD_SVC_COMMENT', 4: 'CMD_DEL_SVC_COMMENT', 5: 'CMD_ENABLE_SVC_CHECK',
6: 'CMD_DISABLE_SVC_CHECK', 7: 'CMD_SCHEDULE_SVC_CHECK', 9:
'CMD_DELAY_SVC_NOTIFICATION', 10: 'CMD_DELAY_HOST_NOTIFICATION', 11:
'CMD_DISABLE_NOTIFICATIONS', 12: 'CMD_ENABLE_NOTIFICATIONS', 13:
'CMD_RESTART_PROCESS', 14: 'CMD_SHUTDOWN_PROCESS', 15:
'CMD_ENABLE_HOST_SVC_CHECKS', 16: 'CMD_DISABLE_HOST_SVC_CHECKS', 17:
'CMD_SCHEDULE_HOST_SVC_CHECKS', 20: 'CMD_DEL_ALL_HOST_COMMENTS', 21:
'CMD_DEL_ALL_SVC_COMMENTS', 22: 'CMD_ENABLE_SVC_NOTIFICATIONS', 23:
'CMD_DISABLE_SVC_NOTIFICATIONS', 24: 'CMD_ENABLE_HOST_NOTIFICATIONS', 25:
'CMD_DISABLE_HOST_NOTIFICATIONS', 26:
'CMD_ENABLE_ALL_NOTIFICATIONS_BEYOND_HOST', 27:
'CMD_DISABLE_ALL_NOTIFICATIONS_BEYOND_HOST', 28:
'CMD_ENABLE_HOST_SVC_NOTIFICATIONS', 29:
'CMD_DISABLE_HOST_SVC_NOTIFICATIONS', 30:
'CMD_PROCESS_SERVICE_CHECK_RESULT', 31: 'CMD_SAVE_STATE_INFORMATION', 32:
'CMD_READ_STATE_INFORMATION', 33: 'CMD_ACKNOWLEDGE_HOST_PROBLEM', 34:
'CMD_ACKNOWLEDGE_SVC_PROBLEM', 35: 'CMD_START_EXECUTING_SVC_CHECKS', 36:
'CMD_STOP_EXECUTING_SVC_CHECKS', 37:
'CMD_START_ACCEPTING_PASSIVE_SVC_CHECKS', 38:
'CMD_STOP_ACCEPTING_PASSIVE_SVC_CHECKS', 39:
'CMD_ENABLE_PASSIVE_SVC_CHECKS', 40: 'CMD_DISABLE_PASSIVE_SVC_CHECKS', 41:
'CMD_ENABLE_EVENT_HANDLERS', 42: 'CMD_DISABLE_EVENT_HANDLERS', 43:
'CMD_ENABLE_HOST_EVENT_HANDLER', 44: 'CMD_DISABLE_HOST_EVENT_HANDLER', 45:
'CMD_ENABLE_SVC_EVENT_HANDLER', 46: 'CMD_DISABLE_SVC_EVENT_HANDLER', 47:
'CMD_ENABLE_HOST_CHECK', 48: 'CMD_DISABLE_HOST_CHECK', 49:
'CMD_START_OBSESSING_OVER_SVC_CHECKS', 50:
'CMD_STOP_OBSESSING_OVER_SVC_CHECKS', 51:
'CMD_REMOVE_HOST_ACKNOWLEDGEMENT', 52: 'CMD_REMOVE_SVC_ACKNOWLEDGEMENT',
53: 'CMD_SCHEDULE_FORCED_HOST_SVC_CHECKS', 54:
'CMD_SCHEDULE_FORCED_SVC_CHECK', 55: 'CMD_SCHEDULE_HOST_DOWNTIME', 56:
'CMD_SCHEDULE_SVC_DOWNTIME', 57: 'CMD_ENABLE_HOST_FLAP_DETECTION', 58:
'CMD_DISABLE_HOST_FLAP_DETECTION', 59: 'CMD_ENABLE_SVC_FLAP_DETECTION', 60:
'CMD_DISABLE_SVC_FLAP_DETECTION', 61: 'CMD_ENABLE_FLAP_DETECTION', 62:
'CMD_DISABLE_FLAP_DETECTION', 63: 'CMD_ENABLE_HOSTGROUP_SVC_NOTIFICATIONS',
64: 'CMD_DISABLE_HOSTGROUP_SVC_NOTIFICATIONS', 65:
'CMD_ENABLE_HOSTGROUP_HOST_NOTIFICATIONS', 66:
'CMD_DISABLE_HOSTGROUP_HOST_NOTIFICATIONS', 67:
'CMD_ENABLE_HOSTGROUP_SVC_CHECKS', 68: 'CMD_DISABLE_HOSTGROUP_SVC_CHECKS',
77: 'CMD_FLUSH_PENDING_COMMANDS', 78: 'CMD_DEL_HOST_DOWNTIME', 79:
'CMD_DEL_SVC_DOWNTIME', 80: 'CMD_ENABLE_FAILURE_PREDICTION', 81:
'CMD_DISABLE_FAILURE_PREDICTION', 82: 'CMD_ENABLE_PERFORMANCE_DATA', 83:
'CMD_DISABLE_PERFORMANCE_DATA', 84: 'CMD_SCHEDULE_HOSTGROUP_HOST_DOWNTIME',
85: 'CMD_SCHEDULE_HOSTGROUP_SVC_DOWNTIME', 86:
'CMD_SCHEDULE_HOST_SVC_DOWNTIME', 87: 'CMD_PROCESS_HOST_CHECK_RESULT', 88:
'CMD_START_EXECUTING_HOST_CHECKS', 89: 'CMD_STOP_EXECUTING_HOST_CHECKS',
90: 'CMD_START_ACCEPTING_PASSIVE_HOST_CHECKS', 91:
'CMD_STOP_ACCEPTING_PASSIVE_HOST_CHECKS', 92:
'CMD_ENABLE_PASSIVE_HOST_CHECKS', 93: 'CMD_DISABLE_PASSIVE_HOST_CHECKS',
94: 'CMD_START_OBSESSING_OVER_HOST_CHECKS', 95:
'CMD_STOP_OBSESSING_OVER_HOST_CHECKS', 96: 'CMD_SCHEDULE_HOST_CHECK', 98:
'CMD_SCHEDULE_FORCED_HOST_CHECK', 99: 'CMD_START_OBSESSING_OVER_SVC', 100:
'CMD_STOP_OBSESSING_OVER_SVC', 101: 'CMD_START_OBSESSING_OVER_HOST', 102:
'CMD_STOP_OBSESSING_OVER_HOST', 103: 'CMD_ENABLE_HOSTGROUP_HOST_CHECKS',
104: 'CMD_DISABLE_HOSTGROUP_HOST_CHECKS', 105:
'CMD_ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS', 106:
'CMD_DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS', 107:
'CMD_ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS', 108:
'CMD_DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS', 109:
'CMD_ENABLE_SERVICEGROUP_SVC_NOTIFICATIONS', 110:
'CMD_DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS', 111:
'CMD_ENABLE_SERVICEGROUP_HOST_NOTIFICATIONS', 112:
'CMD_DISABLE_SERVICEGROUP_HOST_NOTIFICATIONS', 113:
'CMD_ENABLE_SERVICEGROUP_SVC_CHECKS', 114:
'CMD_DISABLE_SERVICEGROUP_SVC_CHECKS', 115:
'CMD_ENABLE_SERVICEGROUP_HOST_CHECKS', 116:
'CMD_DISABLE_SERVICEGROUP_HOST_CHECKS', 117:
'CMD_ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS', 118:
'CMD_DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS', 119:
'CMD_ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS', 120:
'CMD_DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS', 121:
'CMD_SCHEDULE_SERVICEGROUP_HOST_DOWNTIME', 122:
'CMD_SCHEDULE_SERVICEGROUP_SVC_DOWNTIME', 123:
'CMD_CHANGE_GLOBAL_HOST_EVENT_HANDLER', 124:
'CMD_CHANGE_GLOBAL_SVC_EVENT_HANDLER', 125:
'CMD_CHANGE_HOST_EVENT_HANDLER', 126: 'CMD_CHANGE_SVC_EVENT_HANDLER', 127:
'CMD_CHANGE_HOST_CHECK_COMMAND', 128: 'CMD_CHANGE_SVC_CHECK_COMMAND', 129:
'CMD_CHANGE_NORMAL_HOST_CHECK_INTERVAL', 130:
'CMD_CHANGE_NORMAL_SVC_CHECK_INTERVAL', 131:
'CMD_CHANGE_RETRY_SVC_CHECK_INTERVAL', 132:
'CMD_CHANGE_MAX_HOST_CHECK_ATTEMPTS', 133:
'CMD_CHANGE_MAX_SVC_CHECK_ATTEMPTS', 134:
'CMD_SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME', 135:
'CMD_ENABLE_HOST_AND_CHILD_NOTIFICATIONS', 136:
'CMD_DISABLE_HOST_AND_CHILD_NOTIFICATIONS', 137:
'CMD_SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME', 138:
'CMD_ENABLE_SERVICE_FRESHNESS_CHECKS', 139:
'CMD_DISABLE_SERVICE_FRESHNESS_CHECKS', 140:
'CMD_ENABLE_HOST_FRESHNESS_CHECKS', 141:
'CMD_DISABLE_HOST_FRESHNESS_CHECKS', 142:
'CMD_SET_HOST_NOTIFICATION_NUMBER', 143: 'CMD_SET_SVC_NOTIFICATION_NUMBER',
144: 'CMD_CHANGE_HOST_CHECK_TIMEPERIOD', 145:
'CMD_CHANGE_SVC_CHECK_TIMEPERIOD', 146: 'CMD_PROCESS_FILE', 147:
'CMD_CHANGE_CUSTOM_HOST_VAR', 148: 'CMD_CHANGE_CUSTOM_SVC_VAR', 149:
'CMD_CHANGE_CUSTOM_CONTACT_VAR', 150:
'CMD_ENABLE_CONTACT_HOST_NOTIFICATIONS', 151:
'CMD_DISABLE_CONTACT_HOST_NOTIFICATIONS', 152:
'CMD_ENABLE_CONTACT_SVC_NOTIFICATIONS', 153:
'CMD_DISABLE_CONTACT_SVC_NOTIFICATIONS', 154:
'CMD_ENABLE_CONTACTGROUP_HOST_NOTIFICATIONS', 155:
'CMD_DISABLE_CONTACTGROUP_HOST_NOTIFICATIONS', 156:
'CMD_ENABLE_CONTACTGROUP_SVC_NOTIFICATIONS', 157:
'CMD_DISABLE_CONTACTGROUP_SVC_NOTIFICATIONS', 158:
'CMD_CHANGE_RETRY_HOST_CHECK_INTERVAL', 159:
'CMD_SEND_CUSTOM_HOST_NOTIFICATION', 160:
'CMD_SEND_CUSTOM_SVC_NOTIFICATION', 161:
'CMD_CHANGE_HOST_NOTIFICATION_TIMEPERIOD', 162:
'CMD_CHANGE_SVC_NOTIFICATION_TIMEPERIOD', 163:
'CMD_CHANGE_CONTACT_HOST_NOTIFICATION_TIMEPERIOD', 164:
'CMD_CHANGE_CONTACT_SVC_NOTIFICATION_TIMEPERIOD', 165:
'CMD_CHANGE_HOST_MODATTR', 166: 'CMD_CHANGE_SVC_MODATTR', 167:
'CMD_CHANGE_CONTACT_MODATTR', 168: 'CMD_CHANGE_CONTACT_MODHATTR', 169:
'CMD_CHANGE_CONTACT_MODSATTR', 170: 'CMD_DEL_DOWNTIME_BY_HOST_NAME', 171:
'CMD_DEL_DOWNTIME_BY_HOSTGROUP_NAME', 172:
'CMD_DEL_DOWNTIME_BY_START_TIME_COMMENT', 999: 'CMD_CUSTOM_COMMAND'}}

On Mon, Jan 9, 2012 at 3:17 PM, Chris Rebert <clp2 at rebertia.com> wrote:

> On Mon, Jan 9, 2012 at 2:51 PM, david.garvey at gmail.com
> <david.garvey at gmail.com> wrote:
> <snip>
> >>>> class Parse_Nagios_Header:
> > ...     def __init__(self):
> > ...         self.keylist = []
> > ...         self.d = {}
> <snip>
> > ...     def __iter__(self):
> > ...         return iter(self.keylist, self.d)
>
> No idea what you're expecting this __iter__() to do, but it doesn't work
> at all.
> Relevant docs:
> http://docs.python.org/library/functions.html#iter
> http://docs.python.org/reference/datamodel.html#object.__iter__
>
> Cheers,
> Chris
>



-- 
David Garvey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120109/82edc8ec/attachment-0001.html>


More information about the Python-list mailing list