在python中创建和调用变量

时间:2018-07-17 17:25:10

标签: python

我是python的新手,有一个简单的问题…… 在我的项目中,有一个“学生”类,并且有一些学生对象(例如100):

class students:
    def __init__(self, name):
        self.name = name

其中一些学生很特殊(例如五个),现在我想为这五个特殊学生中的每个定义三个变量z0, z1, z2

for c in self.candidate_student:
   z0 
   z1 
   z2

在这部分之后,我想按名称调用每个候选学生变量,如下所示:

student.name.z0
student.name.z1
student.name.z2

谁能解释我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

由于您要向特殊学生添加属性,因此该代码可能会有所帮助:

class students:
    def __init__(self, name, z=None):
        self.name = name
        self.z = z or []

您可以像这样初始化您的特殊学生:

ana = students('Ana', ['Apple', 'Ball', 'Pen'])

并调用如下属性:

ana.z[0]
ana.z[1]

答案 1 :(得分:1)

如果要为每个“特殊”学生定义z0,z1和z2值,则可以将它们设置为对象实例的属性。请注意,您可以随时向对象添加新属性,而不必使用using (var fstream = new FileStream(..., FileMode.Create) using (var writer = new BinaryWriter(fstream)) { // Write headers writer.Write("..."); // Write binary data } 方法。例如,如果您要创建一个新的“特殊学生”对象:

__init__()

现在,s = student("John Doe") s.z0 = 7 s.z1 = 8 s.z2 = 9 刚刚获得了三个新属性(除了s,您可以在name中进行设置),您可以像设置变量后一样在任何地方对其进行寻址。例如,在上述之后:

__init__

请注意,如果您的代码同时适用于“特殊”和“非特殊”对象,则应该期望特殊属性并不总是存在(因此,如果您尝试在对象上使用print (s.name) # will print "John Doe" print (s.z2) # will print 9 事先没有设置的对象,您会得到一个例外)。