How can I print a Python class?

class, python

Solution

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)"

Problem

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!

Original source

Related problems