Форум сайта python.su
1
Приветствую всех
Такой вопрос возник
В методе класса вместо
netsnmp.snmpget
netsnmp.self.snmp_metod
Офлайн
103
что-то я не понял вопроса, куда передать, что передать…
давайте пример
Офлайн
1
terabayt
что-то я не понял вопроса, куда передать, что передать…давайте пример
import netsnmp class snmp (): def __init__(self,Snmp_method): self.snmp_method=Snmp_method self.opros_raznimi_metodami() def opros_raznimi_metodami(self): var = netsnmp.Varbind('sysDescr.0') res = netsnmp.тут должно быть snmpget или snmpgetnext(var, Version = 1,DestHost = 'localhost', Community='public') print int(res[0]) kokoeto_oborudovanie = snmp(Snmp_method=snmpgetnext)
Отредактировано ingfa_1981 (Май 29, 2015 19:44:38)
Офлайн
857
>>> class A: ... def __init__(self, x): ... self.x = x ... >>> a = A(1) >>> a.x 1 >>>
Офлайн
186
> В методе класса вместо…. естественно возникает ошибка что у netsnmp нет атрибута self.snmp_metod
Ну не знают классы ничего о своих экземплярах и всё тут. Если возникает потребность работать с объектом, то надо далеть метод экземпляра, а не класса. Или передавать self как парамерт, но это уже извращение.
Офлайн
1
Rodegast
> В методе класса вместо…. естественно возникает ошибка что у netsnmp нет атрибута self.snmp_metodНу не знают классы ничего о своих экземплярах и всё тут. Если возникает потребность работать с объектом, то надо делать метод экземпляра, а не класса. Или передавать self как парамерт, но это уже извращение.
import netsnmp class snmp (): def __init__(self,Snmp_method, Oid): self.snmp_method=Snmp_method self.oid=Oid self.opros_raznimi_metodami() def opros_raznimi_metodami(self): var = netsnmp.Varbind(self.oid) res = netsnmp.тут должно быть snmpget или snmpgetnext(var, Version = 1,DestHost = 'localhost', Community='public') print int(res[0]) kokoeto_oborudovanie = snmp(Snmp_method=snmpgetnext, Oid='.1.3.6.1.4.1.99990.42.1.1.1.1.4.84.69.83.84')
Отредактировано ingfa_1981 (Май 29, 2015 19:50:12)
Офлайн
568
Э..м мужик, netsnmp - это чужой модуль, ты его никак расширять своими хотелками не должен. Некие добрые люди сделали продукт, назвали его netsnmp, выложили в пайпи, ты им пользуешься, все счастливы.
Что значит “тут должно быть”, нихера подобного! Напиши своё там будет, всё что хочешь, а как понять “в чужом модуле должно быть” - я не знаю. На крайняк сделай свой локальный патч, но “должен” - это у тебя должен. Делай свои классы, наследуй их от от классов библиотеки netsnmp - бога ради. Будут те методы, котрые тебе нужны, это суть ООП питона - наследование.
Офлайн
1
import netsnmp class snmp (): def __init__(self,Snmp_method, Oid): self.snmp_method=Snmp_method self.oid=Oid if self.snmp_method = 'snmpget': self.metod_snmpget() if self.snmp_method = 'snmpgetnext': self.metod_snmpgetnext() def metod_snmpget(self): var = netsnmp.Varbind(self.oid) res = netsnmp.snmpget(var, Version = 1,DestHost = 'localhost', Community='public') print int(res[0]) def metod_snmpgetnext(self): var = netsnmp.Varbind(self.oid) res = netsnmp.snmpgetnext(var, Version = 1,DestHost = 'localhost', Community='public') print int(res[0]) kokoeto_oborudovanie = snmp(Snmp_method='snmpgetnext', Oid='.1.3.6.1.4.1.99990.42.1.1.1.1.4.84.69.83.84') eshe_kokoeto_oborudovanie = snmp(Snmp_method='snmpgetnext', Oid='.1.3.6.1.4.1.99990.42.1.1.1.1.4.84.69.83.84')
Отредактировано ingfa_1981 (Май 29, 2015 21:00:11)
Офлайн
568
Мужик, иди учить питон, ты достал, у тебя вот это
if self.snmp_method = 'snmpget':
Отредактировано FishHook (Май 29, 2015 20:55:00)
Офлайн