У меня есть простой класс и переменная класса внутри этого класса:
class QuotesToScrape:
authors_list = []
def __init__:
В этом классе есть строка кода в методе (метод вызывается из init ):
def gather_authors_list(self):
self.authors_list = some_value
Эта строка не работает, переменная author_list по-прежнему пуста. Но если я изменю «self» на имя класса, все будет работать нормально:
def gather_authors_list(self):
QuotesToScrape.authors_list = some_value
Декораторы не используются. Я чувствую, что вот какой-то важный трюк, который мне нужно понять, чтобы не допустить серьезных проблем в будущем. Важная часть: у меня есть еще одна переменная класса, "кавычки", и она прекрасно работает. Вот почти полный фрагмент моего кода. Переменная класса "quotes" в порядке, переменная класса "hors_list "не в порядке.
class QuotesToScrape:
quotes = []
authors_list = []
def __init__(self):
for page_number in range(1, 501):
page_url = self.make_page_url(page_number)
soup = self.get_soup(page_url)
if self.out_of_quotes(soup):
break
quote_blocks = self.parse_quotes(soup)
for quote_block in quote_blocks:self.quotes
quote = self.extract_quote(quote_block)
self.quotes.append(quote)
self.gather_authors_list()
...
def gather_authors_list(self):
authors = list(set([quote.get('Author') for quote in self.quotes]))
if 'Alexandre Dumas fils' in authors:
duma_index = authors.index('Alexandre Dumas fils')
authors[duma_index] = 'Alexandre (fils) Dumas'
self.authors_list = sorted(authors, key = lambda x: x.split(" ")[-1])
Добавлено позже. Задача решена. Изменена последняя строка для соответствия направлениям из комментариев. Это решило мою проблему, теперь метод не создает новую переменную, а использует существующую пустую переменную класса:
self.authors_list.extend(sorted(authors, key = lambda x: x.split(" ")[-1]))