class s(object):
def vrod(self):
self.name=(input("enter name:"))
self.stno=int(input("enter stno:"))
self.score=int(input("enter score:"))
def dis(self):
j=0
while j<3:
print("enter name:",self.name,"enter stno:",self.stno,"enter score:",self.score)
j+=1
y=[]
j=0
st=s()
while j<3:
st.vrod()
y.append(st)
j+=1
st.dis()
我想显示我输入的信息,但我不能。你想我运行它并输入姓名,学号和分数。然后,我只收到第三人三倍的信息。为什么以及如何消除问题? 感谢
答案 0 :(得分:0)
有几个问题需要解决:
st
对象创建一次,然后在while循环中多次使用。这会多次调用同一对象的相同方法,因此以前的信息会丢失。st
对象多次附加到数组中。因为它是附加的相同对象,所以如果对象被更新,则所有数组中的元素都使用相同的信息更新。dis
方法中,您想要做的是迭代数组并显示收到的所有输入。但是,该函数是对象的成员,并且该对象不了解其他实例化对象。 dis
应该做的只是打印与单个对象相关的数据,然后让外部代码在每个对象上调用该方法。
以下是一些可以满足您需求的更新代码:
class s(object):
def vrod(self):
self.name=(input("enter name:"))
self.stno=int(input("enter stno:"))
self.score=int(input("enter score:"))
def dis(self):
print("enter name:",self.name,"enter stno:",self.stno,"enter score:",self.score)
y=[]
j=0
while j<3:
st = s()
st.vrod()
y.append(st)
j+=1
for st in y:
st.dis()