Home > Enterprise >  python class : when I call the class methods, it always output a "None" within the result
python class : when I call the class methods, it always output a "None" within the result

Time:03-05

I am writing a code to document an employee system, the class can print full name, email:

class Employee:

    def __init__(self,first,last):
        self.first=first
        self.last=last
        
    def fullname(self):
        print('{} {}'.format(self.first,self.last))
    def email(self):
        print('{}.{}@email.com'.format(self.first,self.last))

emp_1=Employee('John','Smith')
emp_1.first='Jim'

print(emp_1.first)
print(emp_1.email())
print(emp_1.fullname())

Output is like this:

output

I don't understand why when I call methods (email(), fullname()), I have a None within the output?

The output is:

Jim
[email protected]
None
Jim
Smith
None

CodePudding user response:

You are using the method call inside a print function. So it will try to print the value which is returned from the method. Since you are not returning anything from the method, it prints None.

You can always return the value instead of printing them inside. Example.

class Employee:

    def __init__(self, first, last):
        self.first = first
        self.last = last

    def fullname(self):
        # just printing the name will not return the value.
        return '{} {}'.format(self.first, self.last)

    def email(self):
        # same, use a return statement to return the value.
        return '{}.{}@email.com'.format(self.first, self.last)


emp_1 = Employee('John', 'Smith')
emp_1.first = 'Jim'

print(emp_1.first)
print(emp_1.email())  # print what is returned by the method.
print(emp_1.fullname())

It will give a proper output like

Jim
[email protected]
Jim Smith
  • Related