Найти - Пользователи
Полная версия: Хочу передать вместо...
Начало » Python для новичков » Хочу передать вместо...
1
ingfa_1981
Приветствую всех
Такой вопрос возник

В методе класса вместо
netsnmp.snmpget

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

netsnmp.self.snmp_metod

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

Как выйти из положения?
terabayt
что-то я не понял вопроса, куда передать, что передать…

давайте пример
ingfa_1981
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?


py.user.next
>>> class A:
...     def __init__(self, x):
...         self.x = x
... 
>>> a = A(1)
>>> a.x
1
>>>
Rodegast
> В методе класса вместо…. естественно возникает ошибка что у netsnmp нет атрибута self.snmp_metod

Ну не знают классы ничего о своих экземплярах и всё тут. Если возникает потребность работать с объектом, то надо далеть метод экземпляра, а не класса. Или передавать self как парамерт, но это уже извращение.
ingfa_1981
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')
FishHook
Э..м мужик, netsnmp - это чужой модуль, ты его никак расширять своими хотелками не должен. Некие добрые люди сделали продукт, назвали его netsnmp, выложили в пайпи, ты им пользуешься, все счастливы.
Что значит “тут должно быть”, нихера подобного! Напиши своё там будет, всё что хочешь, а как понять “в чужом модуле должно быть” - я не знаю. На крайняк сделай свой локальный патч, но “должен” - это у тебя должен. Делай свои классы, наследуй их от от классов библиотеки netsnmp - бога ради. Будут те методы, котрые тебе нужны, это суть ООП питона - наследование.
ingfa_1981
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')

А если сделать так?


FishHook
Мужик, иди учить питон, ты достал, у тебя вот это
if self.snmp_method = 'snmpget':
тупо даст ошибку при первом пробном пуске, ибо тут “синтаксическая ошибка”
здесь нужен оператор “==” (будем считать что отступы съел Ктулкху), иди учись, какой тебе к черту ООП, ты же не знаешь основ питона, куда ты блин лезешь?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB