Python 类列表中的访问项

Python 类列表中的访问项,python,class,methods,class-method,Python,Class,Methods,Class Method,我试图使用以下代码确定列表中元组的第一项是否存在于赋值列表中 class Students: id = int() full_name = "" assignments = [("Assign_1", 4), ("Assign_2", 10)] def __init__(self, id, full_name): self.id = int(id) self.full_name = full_name def get_n

我试图使用以下代码确定列表中元组的第一项是否存在于赋值列表中

class Students:
    id = int()
    full_name = ""
    assignments = [("Assign_1", 4), ("Assign_2", 10)]

    def __init__(self, id, full_name):
        self.id = int(id)
        self.full_name = full_name

    def get_name(self):
        print(self.full_name)
    def get_assignments(self):
        print(self.assignments)
    def get_assignment(self, name):
        if name in self.assignments:
            return name
        else:
            return None

Becky = Students(123, "Becky S")
Becky.get_assignments()
print(Becky.get_assignment("Assign_1"))

为了说明这个概念,我已经包含了更多的代码。当我使用
get_assignments()
方法返回所有作业时,我可以这样做,但当我使用
get_assignment
打印单个作业的名称时,我会一直返回
None
,就好像作业不存在一样。我认为问题在于我如何定义
get_assignment(self,name)
,但无法确定它是什么。

您不能只检查
是否包含在
中,因为该字符串不是列表的元素-列表有元组。您可以检查其中一个赋值是否有第一个成员等于
name
,例如:

def get_assignment(self, name):
    if any(assignment[0] == name for assignment in self.assignments):
        return name
    else:
        return None

这将查看赋值,并将
name
与每个赋值的第0个元素进行比较,找到时返回
True
,否则返回
False

这里的问题与类无关。这是因为您试图在元组列表中搜索字符串

self.assignments
[(“分配1”,4),(“分配2”,10)]
。也就是说,列表中的每个元素都是(name,id)的元组。在中执行
操作时,Python会将参数与列表中的每个元素进行比较。但是
“分配1”
永远不会等于
(“分配1”,4)

相反,您需要在列表上循环并检查名称是否在以下任何元素中:

if any(assignment[0] == name for assignment in self.assignments)

另外请注意,您对Python类的理解存在一些问题。您不想在类级别定义
id
name
。阅读更多信息。

谢谢!这就解释了。还感谢您提供额外的资源。非常新,所以我很感激。