在列表中查找对象

Ros*_*oss 1 python if-statement list

我有一个项目清单.然后我有一个功能,在那里找到一个项目.

def find(self, runners):
    for runners in self._runners:
        if runners.name == name:
            return runners
Run Code Online (Sandbox Code Playgroud)

因此,当我键入runnersworld.find(peter)它应该带回一个打印语句,如"找到记录或记录未找到.每个记录都有一个runid和一个跑步者名称.但是当我运行这个函数时,我得到一个全局变量名称,它没有定义.两个罚款我有:

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
Run Code Online (Sandbox Code Playgroud)

俱乐部课程

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
Run Code Online (Sandbox Code Playgroud)

我已将我的查找功能编辑为:

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") 
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但当我尝试运行runnersworld.find(peter),runners4life.find(peter)我得到:

在记录中找不到跑步者

在记录中找不到跑步者

在记录中找不到跑步者

在记录中找不到跑步者

在记录中找不到跑步者

在记录中找不到跑步者

但是在runners4life中绝对是一个彼得

Dan*_*ahr 5

在下面的代码中:

def find(self, runners):
    for runners in self._runners:
        if runners.name == name:
            return runners    
Run Code Online (Sandbox Code Playgroud)

没有name定义变量.你可能意味着

def find(self, name):
    for runners in self._runners:
        if runners.name == name:
            return runners
Run Code Online (Sandbox Code Playgroud)