Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
5 / 5 / 0
Регистрация: 10.12.2020
Сообщений: 103

Не понимаю как работает instance

25.02.2021, 23:58. Показов 1350. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В качестве практики решил написать змейку с tkinter. Нашел на GitHub код. Не понимаю пару моментов и не могу с ними разобраться.
Python
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
class Segment(object):
    def __init__(self, x, y):
        self.instance = c.create_rectangle(x, y,
                         x+SEG_SIZE, y+SEG_SIZE,
                         fill="white")
class Snake(object):
    def __init__(self, segments):
        self.segments = segments
         
        # список доступных направлений движения змейки
        self.mapping = {"Down": (0, 1), "Up": (0, -1),
                                "Left": (-1, 0), "Right": (1, 0) }
        # изначально змейка двигается вправо
        self.vector = self.mapping["Right"]
     
    def move(self):
         """ Двигает змейку в заданном направлении """
          
         # перебираем все сегменты кроме первого
         for index in range(len(self.segments)-1):
              segment = self.segments[index].instance
              x1, y1, x2, y2 = c.coords(self.segments[index+1].instance)
              # задаем каждому сегменту позицию сегмента стоящего после него
              c.coords(segment, x1, y1, x2, y2)
          
         # получаем координаты сегмента перед "головой"
         x1, y1, x2, y2 = c.coords(self.segments[-2].instance)
          
         # помещаем "голову" в направлении указанном в векторе движения
         c.coords(self.segments[-1].instance,
                       x1 + self.vector[0]*SEG_SIZE,
                       y1 + self.vector[1]*SEG_SIZE,
                       x2 + self.vector[0]*SEG_SIZE,
                       y2 + self.vector[1]*SEG_SIZE)
Ниже приведены классы Segment и Snake. В методе move() класса Snake есть выражение:
Python
1
segment = self.segments[index].instance
Откуда .instance и что оно делает. Я так понимаю это атрибут из класса Segment?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2021, 23:58
Ответы с готовыми решениями:

Не понимаю из-за чего выскакивает: terminate called after throwing instance of std bad_alloc
Не понимаю из-за чего выскакивает ошибка при компиляции: terminate called after throwing instance of std bad_alloc. Буду благодарен, если...

Не понимаю как работает C++ и Qt
у меня есть консольная программа, я для нее хочу сделать интерфейс на Qt, к примеру функция меню void glmenu(Mobs* mob, MainHero& gg)...

Не понимаю,как работает программа
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

8
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
26.02.2021, 05:50
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
Я так понимаю это атрибут из класса Segment?
да, конечно, вот же
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
self.instance = c.create_rectangle(x, y,
                         x+SEG_SIZE, y+SEG_SIZE,
                         fill="white")
то есть прямоугольник видимо какой то
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38174 / 21109 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
26.02.2021, 08:46
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
решил написать
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
Нашел на GitHub код
- Это теперь называется "написать" ?
3
26.02.2021, 08:52

Не по теме:

Catstail, решил ничего не читать, просто "написать")))

0
5 / 5 / 0
Регистрация: 10.12.2020
Сообщений: 103
26.02.2021, 20:42  [ТС]
То есть я имею доступ к атрибуту другого класса без наследования?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
26.02.2021, 20:49
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
То есть я имею доступ к атрибуту другого класса без наследования?
шок-контент! сенсация) ты можешь получать атрибуты любого объекта. Может по ООП почитать чего то?
0
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
27.02.2021, 15:19
Цитата Сообщение от Alex_Zhyr Посмотреть сообщение
То есть я имею доступ к атрибуту другого класса без наследования?
в данном контексте у вас не видно остального кода но смею предположить что у вас дальше такая конструкция
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Segment:
    
    def __init__(self, number):
        self.instance = number # для примера изменим значение для каждого экземпляра
 
 
class Snake:
    def __init__(self, segments):
        self.segments = segments
 
    def move(self):
        for index in range(len(self.segments)-1):
            segment = self.segments[index].instance # получаем объект Segment по индексу и смотрим атрибут instance
            print(segment)
 
 
list_segment = [Segment(number) for number in range(5,11)]
snake = Snake(list_segment)
snake.move()
0
5 / 5 / 0
Регистрация: 10.12.2020
Сообщений: 103
27.02.2021, 15:54  [ТС]
Просто в моем понимании атрибут класса принадлежит непосредственно экземпляру этого класса. В этом случае я обращаюсь к атрибуту, хотя экземпляр класса я не создал.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
27.02.2021, 16:02
Alex_Zhyr, как это не создал, они там созданы! На вход змее подается список с объектами сегментов, вон пример Семеныча очень показателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2021, 16:02
Помогаю со студенческими работами здесь

Не понимаю как работает scanf
Здравствуйте, вот код программы. При работе программы второй scanf пропускается. Почему так происходит? Комментарии в коде. Заранее...

Не понимаю как работает _webpack_require_(x)
Добрый день! Изучаю JS, пытаюсь разобраться в коде библиотеки vis.js. Сразу же натолкнулась на вопрос: что и откуда экспортируется в...

Я не понимаю как работает padding
http://************/lcre22 Мне нужно убрать эту торчалку. #wrapper { margin:auto; } .red img{

Не понимаю как работает программа
Только изучаю программирование. В общем, try/catch, судя по всему, прога просто в первый catch идет и все, пытался по разному значения...

Не понимаю, как работает RSA
Здравствуйте. Такая проблема. Я знаю математический принцип, как работает RSA. Отрытым ключом являются одно число e , а также n. Однако,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru