Ross
Ross

Reputation: 313

find object in list

i have a list of items. i then have a function to find an item in there.

def find(self, runners):
    for runners in self._runners:
        if runners.name == name:
            return runners

so when i type runnersworld.find(peter) it should bring back a print statement such as "record found or record not found. each record has a runnerid and a runner name. but when i run this function i get a global variable name it not defined. the two fines i have are:

RunnerClass

class Runner(object):
def __init__ (self, runnerid, name):
    self._runnerid = runnerid
    self._name = name

@property
def runnerid(self):
    return self._runnerid

@property
def name(self):
    return self._name

@name.setter
def name(self, name):
    self._name = name

def get_fee(self, basicfee, moneyraised):
    raise NotImplementedError("AbstractMethod")        

def __str__(self): 
    rep = "Runner: " + self._runnerid + " " + self._name + "\n"
    return rep

Club Class

class Club (object):
def __init__(self, clubid, name):
    self._clubid = clubid
    self._name = name
    self._runners = []

@property
def clubid(self):
    return self._clubid

@property
def name(self):
    return self._name

@name.setter
def name(self, name):
    self._name = name

@property
def runners (self):
    return self._runners

@runners.setter
def runners(self, runners):
    self._runners = runners

def add(self, runners):
    if runners not in self._runners:
        self._runners.append(runners)

def remove(self, runners):
    if runners in self._runners:
        self._runners.remove(runners)

def find(self, runners):
    for runners in self._runners:
        if runners.name == name:
            return runners    

def __str__(self):
    rep = "Club: " + self._clubid + " " + self._name + "\n"
    for runner in self._runners:
        rep += str(runner)
    return rep

i have edited my find function to:

def find(self, name):
    for runners in self._runners:
        if runners.name == name:
            print("Runner found in Records")
        else:
            print("Runner not found in record") 

it seems to work but when i try to run runnersworld.find(peter) and runners4life.find(peter) i get:

Runner not found in record

Runner not found in record

Runner not found in record

Runner not found in record

Runner not found in record

Runner not found in record

but there is defininatly a peter in runners4life

Upvotes: 1

Views: 316

Answers (1)

Danstahr
Danstahr

Reputation: 4319

In the following piece of code :

def find(self, runners):
    for runners in self._runners:
        if runners.name == name:
            return runners    

there's no variable name defined. You probably mean

def find(self, name):
    for runners in self._runners:
        if runners.name == name:
            return runners

Upvotes: 5

Related Questions