Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2013 17:57:51

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы

Хочу реализовать конструкцию.
Есть некий класс, в котором делается проверка на модель оборудования. Модель определяется и ложится в некую переменную.
Как мне эту переменную передать в зависимости от типа модели в тот или иной класс? (в моем случаи это 2 класса)

Офлайн

#2 Сен. 20, 2013 18:26:31

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Классы

Ничего не понятно, но возможно вам нужна фабрика.

Офлайн

#3 Сен. 21, 2013 20:30:58

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы

#!/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())
<------>

Есть некий класс switch. В нем делается проверка модели коммутатора. Хочется сделать по следующей логике. Определяем модель, а далее если это например ES4612 то сделать операцию 1.
Если DES-1228ME то сделать операцию 2 и т.д.
Суть проблемы как можно переменную model из класса switch передать в другой класс, где вышеуказанная проверка и будет реализована. В идеале хотелось бы реализовать это через 2 класса. 1 класс для вендора edge core и второй для d-link.

Офлайн

#4 Сен. 22, 2013 11:09:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Классы

medelgover
Суть проблемы как можно переменную model из класса switch передать в другой класс, где вышеуказанная проверка и будет реализована.
Для начала Вам нужно чётко определиться в терминах и терминологии, тогда сама постановка вопроса вполне может дать ответ на вопрос.
Вот класс:
class Foo: pass
Что Вы подразумеваете под “передать переменную в класс” ? Как Вы это видите?



Офлайн

#5 Сен. 23, 2013 12:49:20

medelgover
Зарегистрирован: 2013-09-20
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Классы

FishHook
Для начала Вам нужно чётко определиться в терминах и терминологии, тогда сама постановка вопроса вполне может дать ответ на вопрос.

Спасибо, разобрался.
В конструкции которую я хочу реализовать - не нужно несколько классов.
Все можно сделать в 1-м классе и через пару тройку функций.

Пошел дальше курить мануалы!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version