Для цикла против класса-объекта ... Как я могу решить это? - PullRequest
0 голосов
/ 23 сентября 2018

сегодня я попытался создать класс.Я написал это.

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)

Однако, когда я запускаю его, он говорит:

Traceback (последний последний вызов): ['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 QuantitiveAnalysis / MyFirstClass.py ", строка 15, печатная (user1.first_name) NameError: имя 'user1' не определено ['user1', 'user2', 'user3', 'user4', 'user5', 'user6', 'user7', 'user8', 'user9', 'user10', 'user11', 'user12', 'user13', 'user14', 'user15', 'user16', 'user17', 'user18', 'user19 ',' user20 ',' user21 ',' user22 ',' user23 ',' user24 ',' user25 ',' user26 ',' user27 ',' user28 ',' user29 ',' user30 ',' user31 ''user32', 'user33', 'user34', 'user35', 'user36', 'user37', 'user38', 'user39', 'user40', 'user41', 'user42', 'user43', 'user44' ,'user45', 'user46', 'user47', 'user48', 'user49', 'user50']

Мои мысли по этому поводу: я не знаю, прав ли я, но япрочитал в другом потоке, что объект / экземпляр класса не должен иметь отступ, поскольку он будет читаться «как содержимое класса».

С другой стороны, цикл for требует, чтобы этот текст был с отступом.

Как я могу решить эту проблему, если именно то, что я сказал, является именно проблемой.

Если то, что я сказал, неверно, как я могу тогда решить эту ошибку NameError.

Может быть, это как-то связано со списком, из которого я беру имя объекта.Поскольку они - последовательности, возможно это - источник беспокойства.

Буду благодарен за любой намек на то, как я могу решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Я использовал некоторые псевдо-списки для демонстрации, но с этой настройкой вы бы получили доступ к таким значениям, как

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
0 голосов
/ 23 сентября 2018

Доступ к элементам вашего списка с использованием индексной нотации:

print(my_new_list[0].first_name)

И в вашем отступе нет ничего плохого.

Вы никогда не определяли символ user1 ... У вас есть толькоmy_new_list типа list, доступ к элементам которого можно получить с помощью [id].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...