Определение нескольких объектов одного и того же класса в Python - PullRequest
1 голос
/ 01 августа 2011

есть ли сокращенный метод определения нескольких объектов одного класса в одной строке. (Я не говорю о списках или массиве объектов) ..

я имею в виду что-то вроде

p1,p2,p3 = Point()

есть предложения?

Ответы [ 4 ]

6 голосов
/ 01 августа 2011

Может быть несколько эффективнее использовать генераторное понимание, а не списочное:

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()

, которое использует неявный кортежупаковка и распаковка.

3 голосов
/ 01 августа 2011

Не совсем.

p1, p2, p3 = [Point() for x in range(3)]
2 голосов
/ 01 августа 2011

Чего именно вы пытаетесь достичь?

Этот код выполняет то, что вы просите, но я не знаю, является ли это вашей конечной целью:

p1, p2, p3 = [Point() for _ in range(3)]
1 голос
/ 02 августа 2011

Думаю, карта здесь тоже приемлема:

p1, p2, p3 = map(lambda x: Point(), xrange(3))

Но выражение генератора выглядит немного быстрее:

p1, p2, p3 = (Point() for x in xrange(3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...