关于类的新手python问题:AttributeError:'list'对象没有属性

时间:2018-10-01 19:06:03

标签: python python-3.x

我无法使此Python分配正常工作。到目前为止,我得到的所有解释对我来说都是没有道理的。

代码:

class attribute: #Mandatory may not be changed
    def __init__(self,Input_1,Input_2):
        self.info_1= Input_1
        self.info_2= Input_2

def Lister(List1,List2): #Mandatory Function may not be removed
    List= []
    for x in List1:
        List.append(attribute(List1,List2))
    return List


def Checker(List): #Mandatory Function may not be removed
    Awnser=input("What is"+List.info_1) 
    if Awnser != List.info_2 :
        print("Incorrect")
    else:
       print("Correct")

List_a=[1,2,3,4,5,6]
List_b=[1,2,3,4,5,6]

Checker(Lister(List_a,List_b))

该代码应采用List_aList_b并询问用户相应的值在其他列表中将是什么。 但是,我一直遇到此错误,不知道为什么:

Traceback (most recent call last):
  File "so.py", line 24, in <module>
    Checker(Lister(List_a,List_b))
  File "so.py", line 14, in Checker
    Awnser=input("What is"+List.info_1) 
AttributeError: 'list' object has no attribute 'info_1'

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

List的类型为list。它没有任何属性info_1。但是,List具有类型为attribute ...的单个元素,并且 对象将具有名为info_1的属性。

我建议您使用更多描述性的变量名称,并且尤其避免使用现有语言概念的名称。使用类类型名称List作为列表 object 有点麻烦;使用概念attribute作为类的名称是完全误导的。

我还建议您尝试增量编程:一次只实现一个小步骤。在添加更多代码之前,请确保您知道如何操作。在这里,在进行任何测试之前,您已经积累了两个或三个新想法,这可能会增加您的困惑。

您当前的代码需要进行两次小的更改才能获得无错误的输出:

def Checker(List): #Mandatory Function may not be removed
    Awnser=input("What is"+str(List.info_1))

Checker(Lister(List_a,List_b)[0])

这将为您提供原始列表作为输出:

What is[1, 2, 3, 4, 5, 6]