'Happy Valley's James Norton feels "immense pity and empathy" for Tommy Lee Royce.

James Norton plays the part of Tommy Lee Royce

James Norton plays the part of Tommy Lee Royce

The 37-year-old actor has played the ex-convict in the BBC show since 2014, and in spite of his villainous nature, James has grown to love the character.

He shared: "I recognise that there are absolutely despicable acts which he has committed along the way. But along that journey, I have been with him for ten years, I feel deeply sorry for him. I feel immense pity and empathy and I sort of really love him."

James has also relished the experience of working with Sally Wainwright, the show's writer, and co-star Sarah Lancashire.

The actor hailed them as "Queens of our industry".

He told GQ: "You’ve got Sally Wainwright at her absolute best. Sarah Lancashire, standing opposite me, giving her absolute best. These absolute heroes, these Queens of our industry, are the best there are. So it was an absolute privilege.

"I know actors throw those big words around a lot, but it was genuinely one of the most special moments of my career."

James thinks there's an element of "genius" to Sally's writing.

He explained: "Tommy is the villain of the piece. He’s not a classic villain, he’s so far from that. He’s obviously the antagonist, traditionally. But for me personally, I’ve been living a different truth. This is where Sally is a genius, mapping this out in her mind for a decade."

Sally, 60, previously promised fans that the last season of the show would feature "some very good stories".

She said: "I think it's going to be good. I think it's going to be exciting. We've got some very good stories.

"Everyone's back - all the characters you'd expect to see are back."