Есть ли способ получить представление о нескольких списках / переменных как список, как вещи в Python - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть несколько переменных, таких как:

class X(object):
    ...

class XY(X):
    ...

class XZ(X):
    ...

class XA(X):
    ...

y=XY()
z=[XZ(i) for i in range(1,10)]
a=[XA(i) for i in range(1,10)]

Я хотел бы иметь представление в виде списка (включая итерацию и длину) другой переменной y и переменных внутри z и a.

это ради удобства без каких-либо забот о производительности.Я мог бы просто делать

view = [self.y] + self.z + self.a

каждый раз, но это, кажется, нарушает принцип СУХОГО.

Редактировать: чтобы уточнить, что речь не идет о взятии переменных экземпляра класса.Я просто хочу класс представления, возможно, реализующий интерфейс типа списка, который пересылает другим переменным.Или было бы лучше сделать закрытие, которое возвращает список представлений, когда вы вызываете его (так как меня не волнует производительность).Что проще / питоннее / лучше?Как бы я реализовать список, как класс пересылки?., Т. Д.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Если я правильно понимаю, вы хотите «связать» итераторы self.z и self.a и добавить к этому self.y. Возможно, это то, что вы хотите:

import itertools
itertools.chain(self.a, self.z, [self.y])

Самым чистым, вероятно, было бы реализовать его следующим образом:

class C(object):
    def __init__(self, y, z, a):
        # ...

    def __iter__(self):
        return itertools.chain(self.a, self.z, [self.y])
0 голосов
/ 20 декабря 2011

класс X:

def __init__ (self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

x = X (1,2,3) печать x. dict

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...