Python Forum

Full Version: Class Question
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm messing around with Class' and I have a python3 file with the following code:

class playerstats(object):
	def __init__(self, name, baselevel=1, hp, mana, basedmg=0, atkdmg, basedef=0, chardef):
		self.name = name
		self.baselevel = baselevel
		self.hp = hp
		self.mana = mana
		self.basedmg = basedmg
		self.atkdmg = atkdmg
		self.basedef = basedef
		self.chardef = chardef
		return self.name, self.baselevel, self.basedmg, self.basedef
	def selectedclass(self, chosenclass):
		if chosenclass == 'W' or chosenclass == 'w':
			self.hp = 100
			self.mana = 50
		elif chosenclass == 'M' or chosenclass == 'm':
			self.hp = 75
			self.mana = 100
		else:
			print('Error')
		return self.hp, self.mana
		
charcreation = playerstats('Tom', baselevel, self.chosenclass, self.chosenclass, basedmg, 0, basedef, 0)

self.chosenclass = 'w'

print(playerstats.hp)
When I run it, I get this Error:
Error:
File "..\Playground\", line 2 def __init__(self, name, baselevel=1, hp, mana, basedmg=0, atkdmg, basedef=0, chardef): ^ SyntaxError: non-default argument follows default argument
Can someone help me understand why?
The default argument should be at the end and no non-default argument should follow that.
Can you elaborate a little? I'm pretty new to python and I'm doing this as a learning exercise. I'm not 100% familiar with terms yet
take all the default arguments to the end of the function declaration like
def __init__(self, name, hp, mana, atkdmg, chardef baselevel=1,basedmg=0, basedef=0):
And call accordingly
(May-22-2018, 09:41 AM)Rajesh1978 Wrote: [ -> ]take all the default arguments to the end of the function declaration like
def __init__(self, name, hp, mana, atkdmg, chardef baselevel=1,basedmg=0, basedef=0):
And call accordingly
Those are called keyword arguments - not default arguments; they have default values
aaahhhhh understoof. Thank you guys