Anne Hathaway has vowed to give up alcohol for the next 18 years because she does not want to be drunk or hungover in front of her son.
The Hollywood star said she did not plan to drink again until Jonathan, now two, had left home.
Miss Hathaway, 36, revealed on US TV that she made the decision after getting drunk on rum while filming in Mauritius.
She told the Ellen DeGeneres Show: "I am going to stop drinking while my son is living in my house, just because I don't totally love the way I do it and he is getting to an age where he really does need me all the time in the mornings."
"I did one school run one day, where I dropped him off at school, I wasn't driving, but I was hungover and that was enough for me."
Miss Hathaway's son was with her in Mauritius last year while she filmed the thriller Serenity.
She went on a rum-tasting tour one evening with co-star Matthew McConaughey, 49, and his Brazilian wife Camila Alves, 36 and told the chat show host she could not remember much about it.
"I have no idea. They are both cool, I am not. And I just can't drink as much as them," she said.
"So anyway we drank the night away and then I had to go to a meeting with Steven Knight, the director, the next day."
While talking to Knight about her character, she had been so hungover that she was "stumbling" and had "one eye open", Miss Hathaway said. She went teetotal in October.
Miss Hathaway, who starred in The Devil Wears Prada in 2006 and Les Miserables in 2012, is married to actor Adam Shulman.
She has previously spoken out about her health choices, such as losing or gaining weight for roles. Although she went vegan, she decided to quit eating a purely plant-based diet two years later, saying she was not feeling "good or healthy".