Paulo Vagner
Paulo Vagner

Reputation: 49

Return list python

well I have this code returns me a list:

from pysnmp.entity import engine, config
from pysnmp import debug
from pysnmp.entity.rfc3413 import cmdrsp, context, ntforg
from pysnmp.carrier.asynsock.dgram import udp
from pysnmp.smi import builder

import threading
import collections
import time

MibObject = collections.namedtuple('MibObject', ['mibName',
                                   'objectType', 'valueFunc'])


class Mib(object):
    """Stores the data we want to serve. 
    """

    def __init__(self):
        self._lock = threading.RLock()
        self._test_count = 0
        self._test_get = 10
        self._test_set = 0 

    def getTestDescription(self):
        return "My Description"

    def getTestCount(self):
        with self._lock:
            return self._test_count

    def setTestCount(self, value):
        with self._lock:
            self._test_count = value

    def getTestGet(self):
        return self._test_get

    def getTestSet(self):
        return self._test_set

    def setTestSet(self):
        with self._lock:
            self._test_set = value

class ListObject:

    def __init__(self): 
        mib = Mib()
        self.objects = [
            MibObject('MY-MIB', 'testDescription', mib.getTestDescription),
            MibObject('MY-MIB', 'testCount', mib.getTestCount),
            MibObject('MY-MIB', 'testGet', mib.getTestGet),
            MibObject('MY-MIB', 'testSet', mib.getTestSet)
        ]
    def returnTest(self):
        return ListObject()

class main ():        
    print ListObject()

but sometimes it returns the object variable and it returns me this:

<__main__.ListObject instance at 0x16917e8>

What am I doing wrong?

Upvotes: 0

Views: 98

Answers (1)

When you pass an object to python print, the printed string is given by its class 'str' method.

<main.ListObject instance at 0x16917e8> is the string returned by the default implementation of __str__ method. If you haven't overridden this method for your class, the result is just the expected.

EDIT:

If what you want is to print objects when you write print ListObject() you have to override ListObject __str__(self) method:

class ListObject:
    def __str__(self):
        return self.objects.__str__()

Upvotes: 1

Related Questions