Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2015 00:01:43

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  1  -
Профиль   Адрес электронной почты  

Хочу передать вместо...

Приветствую всех
Такой вопрос возник

В методе класса вместо

netsnmp.snmpget

необходимо передать

netsnmp.self.snmp_metod

естественно возникает ошибка что у netsnmp нет атрибута self.snmp_metod

Как выйти из положения?

Офлайн

#2 Май 28, 2015 00:19:46

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Хочу передать вместо...

что-то я не понял вопроса, куда передать, что передать…

давайте пример



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Май 28, 2015 22:58:42

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  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)


Что делать, если я вместо netsnmp.snmpget хочу передать netsnmp.snmpgetnext?


Отредактировано ingfa_1981 (Май 29, 2015 19:44:38)

Офлайн

#4 Май 29, 2015 02:09:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Хочу передать вместо...

>>> class A:
...     def __init__(self, x):
...         self.x = x
... 
>>> a = A(1)
>>> a.x
1
>>>



Офлайн

#5 Май 29, 2015 10:33:39

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Хочу передать вместо...

> В методе класса вместо…. естественно возникает ошибка что у netsnmp нет атрибута self.snmp_metod

Ну не знают классы ничего о своих экземплярах и всё тут. Если возникает потребность работать с объектом, то надо далеть метод экземпляра, а не класса. Или передавать self как парамерт, но это уже извращение.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Май 29, 2015 19:48:56

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  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)

Офлайн

#7 Май 29, 2015 20:08:13

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

Хочу передать вместо...

Э..м мужик, netsnmp - это чужой модуль, ты его никак расширять своими хотелками не должен. Некие добрые люди сделали продукт, назвали его netsnmp, выложили в пайпи, ты им пользуешься, все счастливы.
Что значит “тут должно быть”, нихера подобного! Напиши своё там будет, всё что хочешь, а как понять “в чужом модуле должно быть” - я не знаю. На крайняк сделай свой локальный патч, но “должен” - это у тебя должен. Делай свои классы, наследуй их от от классов библиотеки netsnmp - бога ради. Будут те методы, котрые тебе нужны, это суть ООП питона - наследование.



Офлайн

#8 Май 29, 2015 20:33:41

ingfa_1981
Зарегистрирован: 2014-01-25
Сообщения: 200
Репутация: +  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)

Офлайн

#9 Май 29, 2015 20:45:06

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

Хочу передать вместо...

Мужик, иди учить питон, ты достал, у тебя вот это

if self.snmp_method = 'snmpget':
тупо даст ошибку при первом пробном пуске, ибо тут “синтаксическая ошибка”
здесь нужен оператор “==” (будем считать что отступы съел Ктулкху), иди учись, какой тебе к черту ООП, ты же не знаешь основ питона, куда ты блин лезешь?



Отредактировано FishHook (Май 29, 2015 20:55:00)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version