[Tutor] __str__ on a subclass

Cameron Simpson cs at zip.com.au
Mon Jun 19 18:00:07 EDT 2017


On 19Jun2017 12:32, Evuraan <evuraan at gmail.com> wrote:
>Greetings!

Hi!

>#!/usr/bin/python3
>class Employee:
>        """Class with FirstName, LastName, Salary"""
>        def __init__(self, FirstName,LastName, Salary):
>                self.FirstName = FirstName
>                self.LastName = LastName
>                self.Salary = Salary
>        def __str__(self):
>                return '("{}" "{}" "{}")'.format(self.FirstName,
>self.LastName, self.Salary)
>class Developer(Employee):
>        """Define a subclass, augment with ProgLang"""
>        def __init__(self, FirstName,LastName, Salary, ProgLang):
>                Employee.__init__(self, FirstName,LastName, Salary)
>                self.ProgLang = ProgLang
>        def dev_repr(self):
>                return '("{}" "{}" "{}" "{}")'.format(self.FirstName,
>self.LastName, self.Salary, self.ProgLang)
>a = Employee("Abigail", "Buchard", 83000)
>print(a)
>dev_1 = Developer("Samson", "Sue", 63000, "Cobol",)
>print(dev_1)
>print(dev_1.dev_repr())
>
>running that yields,
>
>("Abigail" "Buchard" "83000")
>("Samson" "Sue" "63000")
>("Samson" "Sue" "63000" "Cobol")
>
>My doubt is, how can we set the  __str__ method work on the Employee
>subclass so that it would show ProgLang too, like the
>print(dev_1.dev_repr())?

Assuming that when you say "the Employee subclass" above you mean "Developer", 
just like any other method you would override in a subclass.  When you define 
Developer, define a __str__ method:

class Developer(Employee):
    ...
    def __str__(self):
        return ..... same expression as dev_repr ...

Broadly speaking, a subclass is "just like" the parent, except as you specify.  
So specify __str__, since you want it to be different.

Cheers,
Cameron Simpson <cs at zip.com.au>


More information about the Tutor mailing list