Python 对于循环与类对象。。。我怎样才能解决它?
今天我尝试创建一个类。 这是我写的Python 对于循环与类对象。。。我怎样才能解决它?,python,python-3.x,class,for-loop,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
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']
文件“/Users/myname/Documents/University/Programming for Quantitive Analysis/MyFirstClass.py”,第15行,在
打印(用户1.名字)
NameError:未定义名称“user1”
用户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、用户35、用户36“,”用户37“,”用户38“,”用户39“,”用户40“,”用户41“,”用户42“,”用户43“,”用户44“,”用户45“,”用户46“,”用户47“,”用户48“,”用户49“,”用户50“]
我的想法是:
我不知道我是否正确,但我在另一个线程中读到,类的对象/实例不应该缩进,因为它将被解读为“类的内容”
另一方面,for循环要求我将此文本缩进
如果我说的正是问题所在,我该如何解决这个问题呢
如果我所说的是错误的,那么我该如何解决这个命名错误呢
也许这与我获取对象名称的列表有关。因为它们是弦,也许那就是麻烦制造者
如果有任何关于如何解决此问题的提示,我将不胜感激。使用索引符号访问列表中的元素:
打印(我的新列表[0]。名字)
你的缩进没有问题
您从未定义过符号
user1
。。。您只有my_new_list
类型的list
,您可以访问使用[id]
的元素。我使用了一些伪列表进行演示,但通过此设置,您可以访问如下值
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)]
user1
在代码中的任何地方都没有定义-这就是namererror
告诉您的。您的意思是访问my_new_list
中的一个值吗?以后,请将错误消息粘贴到代码块中,而不是作为引号。这样,消息的行将被分开,使它更容易阅读。@RobinZigmond我明白了。这就是我试图对for循环所做的。创建它们并指定名字和姓氏是我的计划。我以前创建过类似这样的对象,它使用了这段代码。random_user=MyClass(“Karl”,“Eggers”)print(random_user.last_name)如果for循环不起作用,我如何创建对象,然后分配名字和姓氏?@Billy for循环没有什么问题。正如我所说,问题在于使用的变量名在任何地方都没有赋值。Python不知道您所说的user1
是什么意思——老实说,我也不确定。但是你必须知道你的意思-只要在代码中定义什么是user1
,它应该是类的一个实例。你说不清楚是什么意思?我要为其分配包含某人姓和名的字段的实例。这不是正确的行话吗?
~/python/stackoverflow/9.23$ python3.7 dicta.py
vash
billy
vash stampede
billy stack