2018-01-18 16:43 GMT+01:00 Federico Cerchiari <federicocerchi...@gmail.com>:
> Ciao Luca,
> non ho controllato, ma "a naso" direi che un generatore, anche se definito
> in line è un oggetto function, e come tale ha il suo namespace chiuso che
> non può accedere all'esterno.

Mi sembra forzata come spiegazione, per il generatore self è un
oggetto dell'argomento come gli altri, no?

L'esempio che segue funziona, anche su py2 come l'OP usa. Si dovrebbe
vedere il codice che ha dato l'errore inizialmente per capire il
problema.

    class Schedule(object):
      weeks = {
          3: 'three',
          9: 'nine',
          1: 'one',
          }

      def original_sorting(self):
        for o in (self.weeks[s] for s in sorted(self.weeks)):
          print(o)

    Schedule().original_sorting()

produce:

    $ ipython test.py
    one
    three
    nine


Ma quell'accesso al valore nel generatore mi sembra un po' intricato, io userei:

      def simpler_sorting(self):
        for k, v in sorted(self.weeks.iteritems()):
          print(v)

che si legge più semplicemente.


-- 
Andrea
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a