Форум сайта python.su
Хочу реализовать конструкцию.
Есть некий класс, в котором делается проверка на модель оборудования. Модель определяется и ложится в некую переменную.
Как мне эту переменную передать в зависимости от типа модели в тот или иной класс? (в моем случаи это 2 класса)
Офлайн
Ничего не понятно, но возможно вам нужна фабрика.
Офлайн
#!/usr/bin/python #-*- coding: utf-8 -*- from snmp import Snmp import time import netsnmp class switch: <------>def __init__(self, ip, version, community): <------><------>self.ip = ip <------><------>self.version = version <------><------>#self.model = model <------><------>self.community = community <------><------>#self.base_oid = '.1.3.6.1.4.1' #-------------------Check version block --------------------- <------><------>if (self.version < 1) or (self.version > 3): <------><------><------>tmp = str(self.version) <------><------><------>self.to_log('ERROR', '['+tmp+'] this version do not support: '+tmp) #-------------------check version block-------------- <------><------>pass <------> <------> <------>def check_device(self): <------><------>#s = Snmp(self.ip, self.community).get1('.1.3.6.1.2.1.1.1.0') <------><------>s = netsnmp.snmpget( (netsnmp.Varbind('.1.3.6.1.2.1.1.1.0')), Version = self.version, DestHost=self.ip, Community=self.community) <------><------>s = str(s[0]) <------><------>if(s == 'ES3510MA'): <------><------><------>return 'ES3510MA' <------><------><------>model = 'ES4612' <------><------>elif(s == '8 SFP ports + 4 Gigabit Combo ports L2/L3/L4 managed standalone switch'): <------><------><------>return 'ES4612' <------><------><------>model = 'ES4612' <------><------>elif(s == 'D-Link DES-1228/ME Metro Ethernet Switch'): <------><------><------>return 'DES-1228ME'<---><------><------><------> <------><------><------>model = 'DES-1228ME' <------><------>else: <------><------><------>self.to_log('ERROR', '['+self.ip+'] Unknow device: '+s) <------><------><------>return False <------>def to_log(self, type, str): <------><------>logfile='/var/log/switch_tmp' <------><------>file = open(logfile, 'a') <------><------>current_time=time.strftime('%d-%m-%Y %H:%M:%S') <------><------>file.write(current_time+" "+type+" "+str+"\n") <------><------>file.close <------> if __name__ == '__main__': <------>print (switch('10.0.13.30',2,'public').check_device()) <------>
Офлайн
medelgoverДля начала Вам нужно чётко определиться в терминах и терминологии, тогда сама постановка вопроса вполне может дать ответ на вопрос.
Суть проблемы как можно переменную model из класса switch передать в другой класс, где вышеуказанная проверка и будет реализована.
class Foo: pass
Офлайн
FishHook
Для начала Вам нужно чётко определиться в терминах и терминологии, тогда сама постановка вопроса вполне может дать ответ на вопрос.
Офлайн