How to print instances of a class using print

0 votes

I am learning the ropes in Python. When I try to print an object of class Foobar using the print() function, I get an output like this:

<__main__.Foobar instance at 0x7ff2a18c>

Is there a way I can set the printing behaviour (or the string representation) of a class and its objects? For instance, when I call print() on a class object, I would like to print its data members in a certain format. How to achieve this in Python?

If you are familiar with C++ classes, the above can be achieved for the standard ostream by adding a friend ostream& operator << (ostream&, const Foobar&) method for the class.

Nov 20, 2020 in Python by anonymous
• 10,480 points
1,415 views

4 answers to this question.

0 votes
>>> class Test:
...     def __repr__(self):
...         return "Test()"
...     def __str__(self):
...         return "member of Test"
... 
>>> t = Test()
>>> t
Test()
>>> print(t)
member of Test

The __str__ method is what happens when you print it, and the __repr__ method is what happens when you use the repr() function (or when you look at it with the interactive prompt). If this isn't the most Pythonic method, I apologize, because I'm still learning too - but it works.

If no __str__ method is given, Python will print the result of __repr__ instead. If you define __str__ but not __repr__, Python will use what you see above as the __repr__, but still use __str__ for printing.

answered Nov 20, 2020 by Gitika
• 65,770 points
0 votes

You can redefine the __str__ function if it does answer the question 

[edit] that's exactly what your link is talking about 

Image may contain: text that says 'class Foo: def _init_(self): (self): self.val (range list(range(1, (1, 6)) def _str_(self) self): return sum is: f=Foo() print (f) str(sum(self.val)) sum is: 15'

answered Nov 25, 2020 by Fabrice Kinnar
0 votes

It's similar to c++ but a bit easier, no need to have a stream at all, just use a function named __str__ which returns the string you want to print

answered Nov 25, 2020 by Ahmad rayan
0 votes

You need to implement your own __repr__ method for a custom representation of the class object and if you need custom string conversion then implement __str__ method.

answered Nov 25, 2020 by Saksham Azad

Related Questions In Python

+1 vote
2 answers

How to print first character of each word in upper case of a string in Python

text = "this is a sample python ...READ MORE

answered Jun 22, 2022 in Python by anonymous

edited Mar 5 12,705 views
0 votes
1 answer

How to print the index of a Pandas Dataframe?

You can do this using the code ...READ MORE

answered May 13, 2019 in Python by Usha
22,819 views
0 votes
1 answer

How to access the elements of a dictionary using index ?

Suppose you have a dictionary num = ...READ MORE

answered Jul 4, 2019 in Python by Arvind
• 3,050 points
2,510 views
0 votes
1 answer

Python class inherits object

Python 3.x: class MyClass(object): = new-style class class MyClass: = new-style ...READ MORE

answered Aug 30, 2018 in Python by Priyaj
• 58,020 points
887 views
0 votes
2 answers
+1 vote
2 answers

how can i count the items in a list?

Syntax :            list. count(value) Code: colors = ['red', 'green', ...READ MORE

answered Jul 7, 2019 in Python by Neha
• 330 points

edited Jul 8, 2019 by Kalgi 4,674 views
0 votes
4 answers

How to print objects of class using print function in Python?

You have to called the built in ...READ MORE

answered May 12, 2021 in Python by anonymous

edited Mar 5 78,926 views
+1 vote
4 answers

how to sort a list of numbers without using built-in functions like min, max or any other function?

Yes it is possible. You can refer ...READ MORE

answered Jun 27, 2019 in Python by Arvind
• 3,050 points
189,626 views
webinar REGISTER FOR FREE WEBINAR X
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP