今天无意间看那了zabbix封装的api源码,其中一个单例写法很装X,记录如下:
class ZabbixAPI(object):
auth = ‘’
id = 0
_state = {}
def __new__(cls, *args, **kw):
if not cls._state.has_key(cls):
cls._state[cls] = super(ZabbixAPI, cls).__new__(cls, *args, **kw)
return cls._state[cls]
def __init__(self, url, user, password):
self.__url = url.rstrip('/') + '/api_jsonrpc.php'
self.__user = user
self.__password = password
self._zabbix_api_object_list = ('Action', 'Alert', 'APIInfo', 'Application', 'DCheck', 'DHost', 'DRule',
'DService', 'Event', 'Graph', 'Grahpitem', 'History', 'Host', 'Hostgroup', 'Image', 'Item',
'Maintenance', 'Map', 'Mediatype', 'Proxy', 'Screen', 'Script', 'Template', 'Trigger', 'User',
'Usergroup', 'Usermacro', 'Usermedia')