Diez B. Roggisch wrote: > "S����������������������������������������������" schrieb: >> I've found some class on the Net which takes basically this form : >> >> ###### >> class Foo: >> def __init__(self): >> self.tasks = [] >> ... >> >> def method1(self): >> tasks = [] >> while True: >> ... >> append/pop elements into/from tasks >> ... >> if condition : break >> >> self.tasks[:] = tasks >> return >> ###### >> >> What I do not fully understand is the line "self.tasks[:] = tasks". Why does >> the guy who coded this did not write it as "self.tasks = tasks"? What is the >> use of the "[:]" trick ? > > It changes the list in-place. If it has been given to other objects, it > might require that.
Nowadays it's stylistically better to write self.tasks = list(tasks) as it does just the same and makes it a little clearer what's going on (though of course if tasks *isn't* a list it won't do *exactly* the same. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list