Работа с классами, ошибка : AttributeError: 'int' object has no attribute 'appen

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Здравствуйте, ошибка такая: делаю все по обучению но у автора не выдает ошибку на такие действия у меня выдает, ошибка
AttributeError: 'int' object has no attribute 'append'
при этом код такой:
Python:
def averege_numbers():
    numbers = []

    def inner(numbers):
        numbers.append(numbers)
        return sum(numbers) / len(numbers)

    return inner
нам надо вести в консоль питона:
a1 = averege_numbers()
a1(5)

вот на последнем этапе выдает ошибку.. а у автора все работает

помогите пожалуйста! заранее спасибо)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
Ты в функцию inner передаешь число и записываешь в переменную number, и теперь в ней уже не список, а число.
Надо например так:
Python:
def averege_numbers():
    numbers = []
    def inner(num):
        numbers.append(num)
        return sum(numbers) / len(numbers)
    return inner
 
  • Мне нравится
Реакции: Eva

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
потому что у int нет метода append, там ожидается список скорее всего...
покажите полный код
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
потому что у int нет метода append, там ожидается список скорее всего...
покажите полный код
хмм. а как тогда вызвать список?
это и был полный код):)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
хмм. а как тогда вызвать список?
это и был полный код):)
Переменную для числа другую назначь
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
хмм. а как тогда вызвать список?
это и был полный код):)
и что такое int? inner?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
и вообще-то список нельзя вызвать...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
и что такое int? inner?
тип данных integer - целое число
вам уже дали ответ
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
и что такое int? inner?
int (integer) - целое число
str (string) - строка
float - число с плавающей точкой
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
и вообще-то список нельзя вызвать...
разве? по моему в базе можно было, но раз уж в ООП нельзя зачем проходили это? или конкретно тут нельзя?
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
int (integer) - целое число
str (string) - строка
float - число с плавающей точкой
поняла спасибо!
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
тип данных integer - целое число
вам уже дали ответ
да спасибо!
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
как
разве? по моему в базе можно было, но раз уж в ООП нельзя зачем проходили это? или конкретно тут нельзя?
вызвать можно только callable объект, например функцию или объекты некоторых классов
1649179775726.png
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
Ты в функцию inner передаешь число и записываешь в переменную number, и теперь в ней уже не список, а число.
Надо например так:
Python:
def averege_numbers():
    numbers = []
    def inner(num):
        numbers.append(num)
        return sum(numbers) / len(numbers)
    return inner
теперь работает! спасибо еще раз, вам обоим)
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
как

вызвать можно только callable объект, например функцию или объекты некоторых классов
Посмотреть вложение 1734
хз) конкретно в этом действии нельзя, а если будем иметь список под название допустим Eva. то я думаю вызвать сможем?
 

Eva

Новичок
Пользователь
Фев 2, 2022
58
3
8
16
хз) конкретно в этом действии нельзя, а если будем иметь список под название допустим Eva. то я думаю вызвать сможем?
я пока еще тот метод не проходила
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
хз) конкретно в этом действии нельзя, а если будем иметь список под название допустим Eva. то я думаю вызвать сможем?
список не является callable объектом, поэтому вызвать его нельзя
вызвать можно функцию, или объект класса, если у него определен метод __call__
ну и вот в догонку
 
  • Мне нравится
Реакции: Vershitel_sudeb

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
я пока еще тот метод не проходила
1) Название переменной не влияет на возможности объекта в ней находящегося, от того что ты назовешь список по-другому, вызвать его ты не сможешь
2) Возможно имелось ввиду взять элемент списка a[10]
3) Интересно, что у тебя за курс, где ты проходишь классы, не пройдя базовые типы данных?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
3) Интересно, что у тебя за курс, где ты проходишь классы, не пройдя базовые типы данных?
я тут классы не увидел, возможно опять ошибочная формулировка...
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
974
220
43
21
Москва
я тут классы не увидел, возможно опять ошибочная формулировка...
Я думаю им начали объяснять классы на примере функций и замыканий. Типа есть "класс" (функция), ты ее вызываешь и у тебя появляется "объект" (другая функция)
 
  • Мне нравится
Реакции: regnor

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
Я думаю им начали объяснять классы на примере функций и замыканий. Типа есть "класс" (функция), ты ее вызываешь и у тебя появляется "объект" (другая функция)
возможно, но странно)
 
  • Мне нравится
Реакции: Vershitel_sudeb

Форум IT Специалистов