Может быть несколько эффективнее использовать генераторное понимание, а не списочное:
p1, p2, p3 = (Point() for _ in range(3)) # use xrange() in versions of Python where range() does not return an iterator for more efficiency
Существует также простое решение
p1, p2, p3 = Point(), Point(), Point()
, которое использует неявный кортежупаковка и распаковка.