6

I have a class that contains several functions(most of it contains code that parses smth., get all necessary info and print it). I'm trying to print a class but i get smth. like <_main_.TestClass instance at 0x0000000003650888>. Code sample:

from lxml import html
import urllib2
url = 'someurl.com'


class TestClass:

    def testFun(self):
        f = urllib2.urlopen(url).read()
        #some code

        print 'Value for ' +url+ ':', SomeVariable

    def testFun2(self):
        f2 = urllib2.urlopen(url).read()
        #some code

        print 'Value2 for ' +url+ ':', SomeVariable2

test = TestClass()
print test

When i print functions out of class - all is ok. What i'm doing wrong and how can I print a class?

Thanks!

0

2 Answers 2

7

That's the expected behaviour. Python can't know how the class is represented unless you define a __str__ or __repr__ method to give the class a string representation.

To be clear: __repr__ is usually defined to produce a string that can be evaluated back into a similar object (in your case, TestClass()). The default __repr__ prints out the <__main__.TestClass instance at 0xdeadbeef> thing you see.

Example __repr__:

def __repr__(self):
    return self.__class__.__name__ + '()' # put constructor arguments in the ()

__str__ can be defined to produce a human-readable "description" of the class. If not supplied, you get __repr__.

Example __str__:

def __str__(self):
    return "(TestClass instance)"
Sign up to request clarification or add additional context in comments.

1 Comment

0xdeadbeef if you hit this memory location Ill buy you a stake
1

It looks like you want to print an instance of the class rather than the class itself. Define a __str__ or __repr__ method that returns a string to be used when printing the instance.

See: http://docs.python.org/2/reference/datamodel.html#object.__repr__

http://docs.python.org/2/reference/datamodel.html#object.__str__

1 Comment

Thanks for the answer and additional info!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.