对于循环与类对象...我该如何解决?

时间:2018-09-23 11:29:18

标签: python python-3.x class for-loop

今天我试图创建一个类。 我写的

from first_names_class import firstnames
from last_names_class1 import lastnames
from object_name_list import my_new_list

class MyClass:
    """A Class with automatated full names."""
    # Automatically create the instances of the class named user_indexfrom the rangeiterator
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name

for i in range(0, 49):
    my_new_list[i] = MyClass(firstnames[i], lastnames[i])

print(user1.first_name)

但是,当我运行它时,它说:

  

回溯(最近通话最近):   ['1','2','3','4','5','6','7','8','9','10','11','12',' 13”,“ 14”,“ 15”,“ 16”,“ 17”,“ 18”,“ 19”,“ 20”,“ 21”,“ 22”,“ 23”,“ 24”,“ 25” ,“ 26”,“ 27”,“ 28”,“ 29”,“ 30”,“ 31”,“ 32”,“ 33”,“ 34”,“ 35”,“ 36”,“ 37”,“ 38”,“ 39”,“ 40”,“ 41”,“ 42”,“ 43”,“ 44”,“ 45”,“ 46”,“ 47”,“ 48”,“ 49”,“ 50” ]     文件“ /用户/ myname /文档/大学/用于定量分析的程序/MyFirstClass.py”,第15行,在       打印(user1.first_name)   NameError:未定义名称“ user1”   ['user1','user2','user3','user4','user5','user6','user7','user8','user9','user10','user11','user12','用户13','用户14','用户15','用户16','用户17','用户18','用户19','用户20','用户21','用户22','用户23','用户24','用户25' ,'user26','user27','user28','user29','user30','user31','user32','user33','user34','user35','user36','user37','用户38','用户39','用户40','用户41','用户42','用户43','用户44','用户45','用户46','用户47','用户48','用户49','用户50' ]

我对此的想法: 我不知道我是否正确,但是我在另一个线程中读到,不应缩进类的对象/实例,因为它将被“作为类的内容”读取。

另一方面,for循环要求我将这段文本缩进。

如果我所说的正是问题,该如何解决这个问题。

如果我说的是错误的,那么我该如何解决此NameError问题。

也许与我从中获取对象名称的列表有关。由于它们是字符串,可能是麻烦制造者。

如果能解决这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用索引符号访问列表中的元素:

print(my_new_list[0].first_name)

您的缩进没有错。

您从未定义符号user1 ...您仅拥有my_new_list类型的list,可以使用[id]来访问元素。

答案 1 :(得分:0)

我使用了一些伪列表进行演示,但是通过这种设置,您将访问类似

的值。
first = ['vash', 'billy']
last = ['stampede', 'stack']

class MyClass:
    def __init__(self, f_name, l_name):
        self.first_name = f_name
        self.last_name = l_name
        self.full_name = f_name + ' ' + l_name

user = [MyClass(first[idx], last[idx]) for idx, item in  enumerate(first)]

print(user[0].first_name)
print(user[1].first_name)
[print(user[idx].full_name) for idx, item in enumerate(user)]
~/python/stackoverflow/9.23$ python3.7 dicta.py
vash
billy
vash stampede
billy stack