Python. Связь между экземплярами одного класса через обращение к атрибуту
Есть один класс. Есть два экземпляра этого класса.
Один движется (self.type = 'move'), второй не движется (self.type = 'stay').
Нужно, чтобы второй тоже двигался по координатам первого.
Может ли obj2 апеллируя атрибутом self.type обратиться к obj1, чтобы наследовать его координаты?
Вариант посредника в виде глобальной переменной известен, но нужно чтобы obj2 обращался непосредственно к obj1.
Помогите пожалуйста разобраться.
UPD: Важно, чтобы обращение происходило внутри класса, в методе Update, учитывая, что никакая информация вроде названий или индексов копий неизвестна, известен только атрибут self.type.
import pygame
pygame.init()
WIDTH, HEIGHT = WINDOW_SIZE = 800, 600
FPS = 60
window = pygame.display.set_mode(WINDOW_SIZE)
clock = pygame.time.Clock()
objects = []
class ObjectTest:
def __init__(self, type, x, y):
objects.append(self)
self.type = type
self.color = 'red'
self.rect = pygame.Rect(x, y, 64, 64)
def update(self):
if self.type == 'move':
self.rect.x += 1
self.color = 'green'
if self.type == 'stay':
# здесь нужно self.rect.x взять у копии с тайпом 'move'
self.color = 'white'
def draw(self):
pygame.draw.rect(window, self.color, self.rect)
obj1 = ObjectTest('move', 100, 100)
obj2 = ObjectTest('stay', 200, 200)
play = True
while play:
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
play = False
pygame.quit()
for i in objects: i.update()
window.fill('black')
for i in objects: i.draw()
pygame.display.update()
clock.tick(FPS)
