В Python конкатенация может быть выполнена с помощью +
print(emp_1.fullname(), emp_1.pay, emp_1.email) # THIS WILL WORK,
потому что вы просто передаете строки. [НЕ ОТНОШЕНО к этому вопросу, просто дополнительная информация: в случае, если вы печатаете целые числа или логическое значение, то произойдет сбой, если вы явно не введете его с помощью str ())
print(emp_1.fullname().pay.email) # THIS IS NOT WORKING,
потому что '.' Оператор используется для доступа к методам и переменным экземпляра.
Если вы используете emp_1.fullname (), он вызывает метод fullname (), который возвращает некоторую строку.
Но если вы используете emp_1.fullname (). Pay - emp_1.fullname () - это вызов метода, а метод fullname () не имеет никаких переменных, таких как «pay». Поэтому правильный способ использования - emp_1.pay.
Я бы предложил использовать печатную форму, как,
print("Name :{}:, Pay :{}: , Mail :{}:".format(emp_1.fullname(), emp_1.pay, emp_1.email)) # BECAUSE format will typecast in case if your pay is INTEGER OR FLOAT