一个尝试在python中输入类列表的问题



我是python类的新手。我一直试图做一个类,有一个列表t里面,每个项目的列表包含另一个类。例如,名称为student的类包含两个变量(student_name,mark)。下面是我的代码:

def RempClasse(y):
for i in range(3):
y.t[i].nom = input("nom du elevel")
y.t[i].moyen = float(input("moyenne du elevel"))
for i in range(3):
print(y.t[i].nom)
print(y.t[i].moyen)
class eleve :
nom = ""
moyen = float()
class classe :
t=[[eleve] for i in range(3)]
print(RempClasse(classe))

问题是,当我输入nom du elevel时,它一直给我这个错误:

Traceback (most recent call last):
File "/path/to/code.py", line 13, in <module>
print(RempClasse(classe))
File "/path/to/code.py", line 3, in RempClasse
y.t[i].nom = input("nom du elevel")
AttributeError: 'list' object has no attribute 'nom'

如果你想了解classes,你可能想考虑阅读这样的东西,或者这已经在评论中建议。

不过,你的问题是

a.),您使用classes而不创建它的实例。用class eleve:定义class只是第一部分,接下来你必须创建一个实例(例如eleve()),然后它可以作为Python中的其他对象使用。只写eleve只是引用类,这有点像实例的模板。但是,您希望实例携带您分配给它们的值(例如,当将某些输入分配给.nom时)。

b。)通过在eleve周围添加[ ... ],您将创建一个list,其中list中的一个元素包含三个这样的list。因此,在代码中调用y.t[i]时,得到的是list。其中,list是一个具有您想要调用的属性的对象。只要删除这个括号,就可以创建一个实例或对象的list,您可以使用。

下面是一个工作示例,然而,这不是面向对象编程的目的。我强烈建议您在继续之前先阅读面向对象编程。


def RempClasse(y):
for i in range(3):
y.t[i].nom = input("nom du elevel")
y.t[i].moyen = float(input("moyenne du elevel"))
for i in range(3):
print(y.t[i].nom)
print(y.t[i].moyen)
class eleve :
nom = ""
moyen = float()
class classe :
t=[eleve() for i in range(3)]
print(RempClasse(classe))

相关内容

  • 没有找到相关文章

最新更新