Basically, an enum is just an integer and is represented in the computer a series of bits that can be either zero or one.
If you set each of the states to a power of two, you can use each bit in your interger to represent one state.

Now we can exploit that property to represent multiple states without having to explicitly make the states.
Example:
enum Player {
STANDING = 1,
WALKING = 2,
RUNNING = 4,
JUMPING = 8
}
var state = Player.STANDING #This means the variable equals 1 -> 0b0001
var state = state | Player.JUMPING #This means the variable equal 9 or 8 + 1 or a standing jump -> 0b1001
var state = Player.RUNNING | Player.JUMPING #This means 12 or a running jump -> 0b1100
Now here is how you write your code to make this work.
#These need to be else if because it doesn't make sense to run , walk and stand at the same time
if(state & Player.STANDING != 0):
#Do STANDING Stuff
elif(state & Player.WALKING != 0):
#Do WALKING Stuff
elif(state & Player.RUNNING != 0):
#Do RUNNING Stuff
#Jumping can happen at any time
if(state & Player.JUMPING != 0):
#Do JUMPING Stuff
To clear any state just use: state = state ^ Player.{INSTERT STATE HERE}
By following the above you wont have to have a bunch of variables and don't have to repeat any code.
Hope this helped.
To better understand how this works read this wikipedia page
I also recommend watching a youtube video about binary and bitwise operators on youtube if you need even more information.