在python2.7中,是否有更干净的方法将包含10个或更多值的列表传递给类及其函数并执行它们?

在python2.7中,是否有更干净的方法将包含10个或更多值的列表传递给类及其函数并执行它们?,python,list,function,loops,class,Python,List,Function,Loops,Class,代码问题:从文件中获取userinput并逐行执行该类及其函数。userinput类似于一个包含10个或更多值的列表。我减少了讨论项目的数量。我可以让代码工作并得到输出,但不知道是否有任何更干净的方法,可以很容易地扩展 注意:Python2.7还不能使用3.7 ##下面是一个示例代码及其输出 \\ class student(): 定义初始(自我、姓名、年龄、俱乐部): self.name=name 自我。年龄=年龄 自我俱乐部 def get_俱乐部(自我): 如果int(self.age)1

代码问题:从文件中获取userinput并逐行执行该类及其函数。userinput类似于一个包含10个或更多值的列表。我减少了讨论项目的数量。我可以让代码工作并得到输出,但不知道是否有任何更干净的方法,可以很容易地扩展

注意:Python2.7还不能使用3.7

##下面是一个示例代码及其输出 \\

class student():
定义初始(自我、姓名、年龄、俱乐部):
self.name=name
自我。年龄=年龄
自我俱乐部
def get_俱乐部(自我):
如果int(self.age)15和self.club==“football”:
打印(“学生:+self.name+”位于:“+self.club+”club”)
其他:
打印(“学生:+self.name+”位于:“+self.club+”club”)
ui=[(“吉姆,8岁,乐高”),(“德怀特,16岁,足球”),(“帕姆,21岁,艺术”)]
对于ui中的i:
xy=i.split(',')
c=学生(xy[0],xy[1],xy[2])
c、 获得俱乐部()
\\

代码输出 学生:吉姆在:乐高俱乐部 学生:德怀特在:足球俱乐部
学生:Pam在:arts club

作为python2中的一个简单示例,您需要在这里使用参数解包

X类:
定义初始化(self,a,b):
self.a=a
self.b=b
a=范围(2)
x=x(*a)
x、 a
0
x、 b
1.
为了在您的特定示例中显示这一点,我使用
StringIO
来模拟一个文件:

从StringIO导入StringIO
ui=[(“吉姆,8岁,乐高”),(“德怀特,16岁,足球”),(“帕姆,21岁,艺术”)]
班级学生:
定义初始(自我、姓名、年龄、俱乐部):
self.name=名称
self.age=int(年龄)
自我俱乐部
def get_俱乐部(自我):
"""
您可能希望在这里使用字符串格式,这会使代码变得更加复杂
更具可读性,并允许支持不同的格式
"""
如果self.age<10且self.club==“乐高”:
打印(“学生:{}采用{}.format(self.name,self.club))
elif self.age>15且self.club==“football”:
打印(“学生:{}采用{}.format(self.name,self.club))
其他:
打印(“学生:{}采用{}.format(self.name,self.club))
#您将希望使用`with open(file)作为fh:`而不是
#这只是一个例子
fh=StringIO('\n'.连接(ui))
对于fh中的线路:
line=line.strip().split(“,”)
#注意iterable前面的*号
c=学生(*行)
c、 获得俱乐部()
学生:吉姆在玩乐高
学生:德怀特在踢足球
学生:帕姆学的是艺术

str.format
可从python2移植到python3,并且非常适合您使用
print
上的括号,这将使您最终的迁移过程更加轻松

您的if语句的目的是什么?似乎总是一样的output@JulienRoullé这只是一个示例代码,为了便于理解,我没有提交真正的数学问题。@C.Nivs我看到它在Python3.7中工作,它在2.7中也工作吗?注;我还不能升级到3.7,因为有100个python文件需要缓慢升级!您可以传递一个多行字符串(三引号分隔符)并首先按行尾拆分,而不是传递一个预先格式化的列表,这将生成一个类似于此处编程的列表。这是朝着能够从文件中读取列表迈出的一大步。
class student():
    def __init__(self,name,age,club):
        self.name=name
        self.age=age
        self.club=club
    def get_club(self):
        if int(self.age)<10 and self.club=="lego":
            print("Student :"+self.name+' is in: '+self.club+ ' club')
        elif int(self.age)>15 and self.club=="football":
            print("Student :"+self.name+' is in: '+self.club+ ' club')
        else:
            print("Student :"+self.name+' is in: '+self.club+ ' club')
ui=[("Jim,8,lego"),("Dwight,16,football"),("Pam,21,arts")]
for i in ui:
    xy=i.split(',')
    c=student(xy[0],xy[1],xy[2])
    c.get_club()