Я только вчера узнал с этого сайта, что могу:
class Seq(object):
def __init__(self, seq):
self.seq = seq
def __repr__(self):
return repr(self.seq)
def __str__(self):
return str(self.seq)
def all(self):
return Seq(self.seq[:])
def head(self, count):
return Seq(self.seq[:count])
def tail(self, count):
return Seq(self.seq[-count:])
def odd(self):
return Seq(self.seq[1::2])
def even(self):
return Seq(self.seq[::2])
def reverse(self):
return Seq(self.seq[::-1])
>>> s = Seq(range(0, 100))
>>> print s.head(10).odd().even().reverse()
[9, 5, 1]
Я хочу перечислить возможную комбинацию этих цепочек методов последовательности внутри класса Seq, может вроде:
itertools.product([s.head,s.odd,s.even,s.reverse], repeat=4)
# may not just limited those 4 functions
как использовать itertools.product()
до
1). генерировать список цепочек функций, которые можно вызвать? просто так:
foo = s.head().odd().even().reverse()
2). генерировать цепочки строк в состоянии eval (), которые я могу сохранить в файле ascii или в eval () позже или для целей ведения журнала?
head()
, tail()
могут принимать параметры, и even()
, odd()
не требуется, например,
Пареметр head () и tail () может из списков:
head_lmt = [10,20,30]
tail_lmt = [30,40,50]
foo = s.head().odd().tail().reverse()
^------------------------------------head_lmt 10 or 20 or 30
^-----------------------tail_lmt 30 or 40 or 50
Если мой Q1 возможен, как я могу заполнить эти параметры в списке с возможностью вызова и в строке с возможностью eval (), a.k.a сгенерировать более конкретный список с возможностью вызова и строку с возможностью eval ()?
Спасибо!