I'm learning python and am trying to write a wound system based on hot zones of a character. Here's what I've written. Don't judge me too much.
class Character:
def __init__ (self, agility, strength, coordination):
self.max_agility = 100
self.max_strength = 100
self.max_coordination = 100
self.agility = agility
self.strength = strength
self.coordination = coordination
def hit (self, hit_region, wound):
self.hit_region = hit_region
self.wound = wound
#Hit Zones
l_arm=[]
r_arm=[]
l_leg=[]
r_leg=[]
hit_region_list = [l_arm , r_arm, l_leg, r_leg]
#Wound Pretty Names
healthy = "Healthy"
skin_cut = "Skin Cut"
muscle_cut = "Muscle Cut"
bone_cut = "Exposed Bone"
hit_region.append(wound)
john = Character(34, 33, 33)
john.hit(l_arm, skin_cut)
I'd expect for the skin_cut input to be recognized as "Skin Cut", then added to l_arm, which I defined as a list. However, I always get a name error (l_arm is not defined). If i rewrite the method with the 'wound' as the first argument,the Name Error now comes with 'wound' as not defined. That kind of tells me it's something in the structure of the class I've missed, but I can't tell what.
I change my previous answer to this.
class Character:
def __init__ (self, agility, strength, coordination):
self.max_agility = 100
self.max_strength = 100
self.max_coordination = 100
self.agility = agility
self.strength = strength
self.coordination = coordination
self.l_arm=[]
self.r_arm=[]
self.l_leg=[]
self.r_leg=[]
self.hit_region_list = [self.l_arm , self.r_arm, self.l_leg, self.r_leg]
self.healthy = "Healthy"
self.skin_cut = "Skin Cut"
self.muscle_cut = "Muscle Cut"
self.bone_cut = "Exposed Bone"
def hit (self, hit_region, wound):
self.hit_region = hit_region
self.wound = wound
hit_region.append(wound)
#Hit Zones
#Wound Pretty Names
john = Character(34, 33, 33)
john.hit(john.l_arm,john.skin_cut)
print john.hit_region
print john.l_arm
After running the above code I got this output
output:
['Skin Cut']
['Skin Cut']
As per the post, I think this is what you wanted. According to your previous code, your declarations were accessible inside a function only. Now You can manipulate the data and these variables for particular instances by declaring them inside the constructor.