Почему не виден массив в методе?
Создал класс, в нем определил массив postsMas и ниже создал метод save(). Дальше в этом методе я хотел обратится к массиву но по какой-то неизвестной для меня причине в методе save() не виден массив postsMas. Хотя определяю массив выше метода. Объясните пожалуйста почему?
Вот код:
class Post():
title = '1'
pubDate = '2'
time = '3'
postsMas = [
[self.title, self.pubDate, self.time]
]
SAVES_FILE = 'saves.dat'
def save(self):
SAVES_FILE = 'saves.dat'
with open(SAVES_FILE, 'ab') as file:
pickle.dump(postsMas, file)
Ответы (4 шт):
Автор решения: CrazyElf
→ Ссылка
- У вас съехало форматирование.
- Определитесь: это у вас всё переменные класса (и тогда
selfтам везде лишний) либо это переменные экземпляра класса (и тогда их надо инициализировать в специальной функции__init__и везде перед такими переменными писатьself, включая переменнуюpostsMas.
Автор решения: вася
→ Ссылка
import pickle
class Post():
title = '1'
pubDate = '2'
time = '3'
postsMas = [title, pubDate, time]
SAVES_FILE = 'saves.dat'
def save(self):
with open(Post.SAVES_FILE, 'wb') as file:
pickle.dump(Post.postsMas, file)
Post().save()
Автор решения: S. Nick
→ Ссылка
Пробуйте так:
class Post():
title = '1'
pubDate = '2'
time = '3'
postsMas = [
[title, pubDate, time] # - self
]
SAVES_FILE = 'saves.dat'
def save(self):
# SAVES_FILE = 'saves.dat'
print(f'SAVES_FILE = {self.SAVES_FILE}, postsMas = {self.postsMas}')
with open(self.SAVES_FILE, 'ab') as file: # + self.
pickle.dump(self.postsMas, file) # + self.
post = Post()
post.save()
или так:
class Post():
def __init__(self):
super().__init__()
self.title = '1'
self.pubDate = '2'
self.time = '3'
self.postsMas = [
[self.title, self.pubDate, self.time]
]
self.SAVES_FILE = 'saves.dat'
def save(self):
# SAVES_FILE = 'saves.dat'
print(f'SAVES_FILE = {self.SAVES_FILE}, postsMas = {self.postsMas}')
with open(self.SAVES_FILE, 'ab') as file:
pickle.dump(self.postsMas, file)
post = Post()
post.save()
Автор решения: Андрей Таков
→ Ссылка
Создал массив в классе? Обращайся к нему, как классовому массиву Post.postsMas, то же самое будет касаться и переменных создаваемых внутри класса. Ты же ищешь глобальный элемент postsMas, которого нет.