On Feb 12, 2008 11:56 AM, Guido van Rossum &lt;<a href="mailto:guido@python.org">guido@python.org</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Here&#39;s another way to look at it, maybe it&#39;ll help. My hunch is that<br>whenever someone writes x = copy(y), they actually know more about the<br>type of y than just that it is an object! Because if they knew<br>*nothing* about it, they wouldn&#39;t know whether copying was (a)<br>
pointless (as it is for immutable objects), (b) impossible (e.g. for<br>sockets), or (c) useful (e.g. for lists).</blockquote><div><br>Based on the same reasoning, when we see x = copy(y) we can tentatively assume that y is a type that can usefully be copied.&nbsp; Unless we don&#39;t trust the author of the code to be sensible.<br>
&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Seeing x=copy(y) provides no new information about y, since<br>all (well, most) objects can be copied. OTOH seeing x=y.copy() *does*<br>
provide new information about y; it must be a type that has a .copy()<br>method. </blockquote><div><br>What useful information do we get by knowing that a type has a .copy() method? <br></div><div><br>If I took the last sentence out of context, I would assume that having a .copy() method informs you
that the type is copyable.&nbsp; Except you&#39;ve just said that all
(well, most) objects in Python can be copied--so I&#39;m not sure new information a .copy() method conveys.&nbsp; <br><br>Normally I might assume that it does a special kind of copying that doesn&#39;t fit the definition of copy.copy() nor copy.deepcopy(), except that for dict and set types, .copy() and .__copy__() are identical.<br>
</div></div><br>-- <br>Daniel Stutzbach, Ph.D. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; President, Stutzbach Enterprises LLC