On Fri, 31 Jan 2014 11:35:14 +1100, Ben Finney wrote: > Cameron Simpson <c...@zip.com.au> writes: > >> Hmm. I do not like the replace() as suggested. >> >> Firstly, replace is a verb, and I would normally read >> td.replace(microseconds=0) as an instruction to modify td in place. >> Traditionally, such methods in python return None. > > I agree with this objection. A method that is named “replace”, yet does > not modify the object, is badly named.
py> 'badly named'.replace('badly', 'well') 'well named' "replace" is a perfectly reasonable name for a method which performs a replacement, whether it replaces in place (for mutable objects) or makes a copy with replacement (for immutable objects). What else would you call it? py> ('well named'. ... make_a_copy_while_simultaneously_performing_a_replacement_on_the_copy ... ('well', 'excessively long') ... ) 'excessively long named' While explicit is better than implicit, sometimes you can be *too* explicit. If timedelta objects were mutable, then I would expect that you would just write the fields directly: td.microseconds = 0 rather than mess about with a replace method. -- Steven -- https://mail.python.org/mailman/listinfo/python-list