Есть ли в python способ использовать декоратор свойств с типом данных pygame rect?

#python #pygame

Вопрос:

Я пытаюсь придать пользовательскому классу атрибут rect, используя @property декоратор для возврата нового объекта rect с x, y, шириной и высотой объекта.

 @property  def rect(self):  return pygame.Rect(self.x, self.y, self.width, self.height)    @rect.setter  def rect(self, new_rect):  self.x = new_rect.x  self.y = new_rect.y  self.width = new_rect.width  self.height = new_rect.height  

Я могу сделать сеттер полностью заменить прямоугольник с нового прямоугольника, обновление объекта атрибутами должным образом, но есть ли способ, чтобы заставить его работать, когда атрибуты прямоугольник обновляются (т. е. object.rect.bottomright = [5, 3] создадим прямоугольник, обновить атрибут нижнем и применить изменения к объекту X и y, ширина и высота)? Если мне не хватает лучшего подхода, я бы тоже был признателен.

Комментарии:

1. Нет, если только вы не вернете какую-то оболочку из object.rect этого прокси-сервера для любых взаимодействий обратно в object .

2. Почему ты хочешь это сделать? Что не так с rect атрибутом?

3. Почему вы храните x, y, ширину и высоту отдельно? Вы могли бы просто иметь атрибут rect для своего объекта и изменять его, как обычно.

4. Спасибо, я избегал rect , чтобы атрибут содержал x , y , width и height потому что я не хотел иметь доступ к rect атрибуту в любое время, когда я хотел получить доступ к одному из этих общих атрибутов, но я понял, что могу просто pygame.Rect подклассировать класс, чтобы получить этот эффект со всеми результирующими атрибутами.