The 42-year-old entered the water despite the beach being closed following a shark sighting about 90 minutes earlier.
Rescuers later found the man on the shore with his right leg bitten off. His left leg had been cut off below the knee.
Amateur footage showed the man being airlifted by helicopter from the scene and a large shark in the waters. He is now said to be in a critical condition.
“When the victim entered the water, the beach was still closed and the shark flag indicating the presence of a white shark was flying,” Cape Town authorities said in a statement.
Another case of a shark just having It is all very well being wise after the event, but a shark flag means a shark has been spotted off the beach. Perhaps there needs to be better education for sharks about what they are allowed and not allowed to eat in their natural habitat.