Self-defense, huh...

Personally, I prefer the old method of feigning insanity. I carry one of my knives with me always, and if I get jumped, I start shouting either random combinations of words, or words that don't even exist.

You will either creep out your assaulters long enough for you to escape, or to gain the initiative.

...Or, you could pull out something that appears to be a detonator...

......Orrrrr... just run for your life?

I dunno. (You probably shouldn't take my suggestions seriously; they might get you arrested.)