给定一个python类class Student():
和一个列表names = []
;然后我想创建几个Student()
实例并将它们添加到列表names
names = [] # For storing the student instances
class Student():
def __init__(self, score, gender):
self.score = score
self.gender = gender
现在我想看看所有男生的成绩,我能这样做吗?
scores = []
for i in names:
if i.gender == "Male":
scores.append(i.score)
我的问题是:如何创建一个可以(如果可以通过任何语句)存储Student
实例的列表?或者更确切地说,当我编写names = []
时,我如何声明names
中的每个元素都是Student
的实例,以便我可以使用该元素的属性,尽管python是弱类型的?我希望我说清楚了;)
我可以这样写吗:
for i in range(len(names)):
student = Student()
student = names[i]
if student.gender == "Male":
# Whatever
我想不是。。。
你试过上面的代码了吗?它应该工作得很好。你可以把它浓缩成:
请注意,调用列表
names
是一种误导,因为它是Student
实例的列表。不能将列表定义为学生实例列表;这不是Python的工作方式。
你是在问如何创建你称之为
names
的列表吗?当然相当于
然后反过来
如果需要对每一行进行大量处理,那么可以将处理移到单独的函数中,或者使用
for
循环。响应您的编辑,我认为您正试图在Python中声明变量的类型。你写道:
第
student = Student()
行的目的是什么——您试图声明变量的类型student
?别那么做。以下将按您的意愿进行:注意以下几点:
range(n)
,然后在names
中查找每个实例;遍历容器的每个元素是for
循环的目的。student
做任何声明——它可以是字符串、布尔值、列表、aStudent
等等。这是动态类型。同样,students
不必是一个列表;您可以在任何iterable上迭代。student.gender
时,Python将获得gender
的student
属性,或者在没有异常的情况下引发异常。我对OOP还不太熟悉,但这难道不能很好地满足您的要求吗?
name_list
是一个类变量,每次您创建一个新的Student
对象时,它都会被添加到Student.name_list
。比如说,你有一个方法cheat(self)
,你想在第三个学生身上执行,你可以运行Student.name_list[2].cheat()
。代码:输出:
首先python是而不是弱类型的。但是它是动态类型的,因此不能为列表指定元素类型。
但是,这不会阻止您访问对象的属性。这很管用:
然而,使用列表理解来写这篇文章更像是一种Python:
相关问题 更多 >
编程相关推荐