Size: a a a

2020 May 26

YV

Yuliya Volkova in SPb Python
т.е тип у него list? и объекты в них тоже list?
источник

YV

Yuliya Volkova in SPb Python
button_row - имеет тип list питоновский?
источник

DS

David Shiko in SPb Python
>>> type(keyboard)
<class 'list'>
>>> type(keyboard_obj)
<class 'telegram.inline.inlinekeyboardmarkup.InlineKeyboardMarkup'>
>>> type(keyboard[2])
<class 'list'>
>>> type(keyboard[2][1])
<class 'telegram.inline.inlinekeyboardbutton.InlineKeyboardButton'>
>>>
источник

YV

Yuliya Volkova in SPb Python
ну так а почему тогда жто лист?
источник

YV

Yuliya Volkova in SPb Python
это какие-то итерируемые объекты кастомные
источник

YV

Yuliya Volkova in SPb Python
сделай принт содержания keyboard[2]
источник

YV

Yuliya Volkova in SPb Python
посмотри что там
источник

YV

Yuliya Volkova in SPb Python
зайди в метод index этого объекта
источник

YV

Yuliya Volkova in SPb Python
посмотри что делает он
источник

DS

David Shiko in SPb Python
Yuliya Volkova
ну так а почему тогда жто лист?
keyboard - list, внутри него объекты
Если что, тут 2 типа объекта, у исходного окончание "markup", у других "button"

print(keyboard[2])
[<telegram.inline.inlinekeyboardbutton.InlineKeyboardButton object at 0x0000023A24A2DE80>, <telegram.inline.inlinekeyboardbutton.InlineKeyboardButton object at 0x0000023A24A2DF40>]
источник

YV

Yuliya Volkova in SPb Python
David Shiko
keyboard - list, внутри него объекты
Если что, тут 2 типа объекта, у исходного окончание "markup", у других "button"

print(keyboard[2])
[<telegram.inline.inlinekeyboardbutton.InlineKeyboardButton object at 0x0000023A24A2DE80>, <telegram.inline.inlinekeyboardbutton.InlineKeyboardButton object at 0x0000023A24A2DF40>]
ты сделал print(type(keyboard)) и тебе вышло что это list?
источник

DS

David Shiko in SPb Python
т.е. метод inline_keyboard  возвращает список (keyboard_obj.inline_keyboard) у исходного объекта, а в списке объекты типа "button"
источник

DS

David Shiko in SPb Python
Yuliya Volkova
ты сделал print(type(keyboard)) и тебе вышло что это list?
Да
>>> print(type(keyboard))
<class 'list'>
источник

DS

David Shiko in SPb Python
Yuliya Volkova
ты сделал print(type(keyboard)) и тебе вышло что это list?
А, я начел возможную причину.
Метод eq у конечно объекта "button" (который лежит в списке (button_row), который в свою очередь лежит в списке (keyboard), который извлекается из объекта keyboard_obj)
Возвращается равенство для любого объекта  "button"

>>> keyboard[2][1].eq(keyboard[1][0])
True
>>> keyboard[2][1].eq(keyboard[2][1])
True
>>> keyboard[2][1].eq(keyboard[0][1])
True
>>>
источник

YV

Yuliya Volkova in SPb Python
David Shiko
А, я начел возможную причину.
Метод eq у конечно объекта "button" (который лежит в списке (button_row), который в свою очередь лежит в списке (keyboard), который извлекается из объекта keyboard_obj)
Возвращается равенство для любого объекта  "button"

>>> keyboard[2][1].eq(keyboard[1][0])
True
>>> keyboard[2][1].eq(keyboard[2][1])
True
>>> keyboard[2][1].eq(keyboard[0][1])
True
>>>
огонь) молодец
источник

DS

David Shiko in SPb Python
Yuliya Volkova
огонь) молодец
Думаешь, это истинная причина?
Вообще не понял как это работает, т.е. метод index у списка обращается к методу eq у своего аргумента, что бы проверить, равен ли он элементу списка. При чем равенство идет оператором "is", а не "==".
Отсюда вопрос, почему под капотом просто не использовать id() или hash (хэш кстати у всех конечных объектов разный, проверено) ?
источник

YV

Yuliya Volkova in SPb Python
David Shiko
Думаешь, это истинная причина?
Вообще не понял как это работает, т.е. метод index у списка обращается к методу eq у своего аргумента, что бы проверить, равен ли он элементу списка. При чем равенство идет оператором "is", а не "==".
Отсюда вопрос, почему под капотом просто не использовать id() или hash (хэш кстати у всех конечных объектов разный, проверено) ?
index ищет объект эквальный твоему не по хэшу
источник

DS

David Shiko in SPb Python
Yuliya Volkova
index ищет объект эквальный твоему не по хэшу
Про id кстати не уверен

>>> i1 = 123000123
>>> i2 = 123000123
>>> id(i1) == id(i2)
False
>>> i1 == i2
True
>>>
источник

YV

Yuliya Volkova in SPb Python
David Shiko
Про id кстати не уверен

>>> i1 = 123000123
>>> i2 = 123000123
>>> id(i1) == id(i2)
False
>>> i1 == i2
True
>>>
источник

YV

Yuliya Volkova in SPb Python
источник