I am coding a user saver and I have 5 classes and when I run a function from one of them it says TypeError: g is not defined
but I have entered the correct parameters. It thinks self is parameter. I definitely think that there must be a solution.
class Generator(object):
"""Generates data base
class."""
def __init__(self):
"""type 0 = user
type 1 = password"""
pass
def generate(self, formats, userType, fn, sn, a, c, g):
empty_data = formats
if userType == 0:
empty_data["foreName"] = fn
empty_data["surName"] = sn
empty_data["age"] = a
empty_data["country"] = c
empty_data["gender"] = g
else:
pass
return empty_data
class UserGenerator(object):
"""Generates new user data
in json format."""
def __init__(self):
"""New user data gen"""
self.userFormat = userFormat = {
"foreName": None,
"surName": None,
"age": None,
"country": None,
"gender": None,
}
def generateUser(self, fn, sn, a, c, g):
"""Returns a dict with usr data"""
gen = Generator()
userDataDict = gen.generate(self.userFormat, 0, fn, sn, a, c, g)
return userDataDict
class User(object):
"""defines a new base User"""
def __init__(self):
"""Data is a dictionary that is
the information for a new user
userdata is stored as json."""
pass
def saveUser(self, data):
self.foreName = data["foreName"]
self.surName = data["surName"]
self.age = data["age"]
self.country = data["country"]
self.gender = data["gender"]
self.user = UserGenerator.generateUser(self.foreName, self.surName,
self.age, self.country, self.gender)
data = self.data
Data.save(data, "userData.json")
user = User()
ug = UserGenerator()
def newUser(fn, sn, a, c, g):
"""Creates a new base user
and saves it."""
data = ug.generateUser(fn, sn, a, c, g)
user.saveUser(data)
apart from the obvious indentation errors why am I getting
Traceback (most recent call last):
File "user.py", line 125, in <module>
newUser("John", "Doe", 21, "Random", "Random")
File "user.py", line 118, in newUser
user.saveUser(data)
File "user.py", line 102, in saveUser
self.user = UserGenerator.generateUser(self.foreName, self.surName, self.age, self.country, self.gender)
TypeError: generateUser() missing 1 required positional argument: 'g'
How do I fix this? How do I stop it from thinking self is a parameter?