Pradipto Banerjee於 2012年10月16日星期二UTC+8下午9時59分05秒寫道:
> I am trying to define class, where if I use a statement a = b, then instead 
> of "a" pointing to the same instance as "b", it should point to a copy of 
> "b", but I can't get it right.
> 
> 
> 
> Currently, I have the following:
> 
> 
> 
> ----
> 
> 
> 
> class myclass(object):
> 
>         def __init__(self, name='')
> 
>                 self.name = name
> 
> 
> 
>         def copy(self):
> 
>                 newvar = myclass(self.name)
> 
>                 return newvar
> 
> 
> 
>         def __eq__(self, other):
> 
>                 if instance(other, myclass):
> 
>                         return self == other.copy()
> 
>                 return NotImplemented
> 
> ----
> 
> 
> 
> Now if I try:
> 
> 
> 
> >>> a=myclass()
> 
> >>> a.name = 'test'
> 
> >>> b=a
> 
What you really want is b=a.copy() 
not b=a to disentangle two objects.

__eq__ is used in the comparison operation. 
 


> >>> b.name
> 
> 'test'
> 
> >>> b.name = 'test2'
> 
> >>> a.name
> 
> 'test2'
> 
> 
> 
> I wanted b=a to make a new copy of "a", but then when I assigned b.name = 
> 'test2', even a.name became 'test2'.
> 
> 
> 
> How can I rectify my code to make the __eq__() behave like copy()?
> 
> 
> 
> Thanks
> 
> 
> 
> 
> 
>  This communication is for informational purposes only. It is not intended to 
> be, nor should it be construed or used as, financial, legal, tax or 
> investment advice or an offer to sell, or a solicitation of any offer to buy, 
> an interest in any fund advised by Ada Investment Management LP, the 
> Investment advisor.  Any offer or solicitation of an investment in any of the 
> Funds may be made only by delivery of such Funds confidential offering 
> materials to authorized prospective investors.  An investment in any of the 
> Funds is not suitable for all investors.  No representation is made that the 
> Funds will or are likely to achieve their objectives, or that any investor 
> will or is likely to achieve results comparable to those shown, or will make 
> any profit at all or will be able to avoid incurring substantial losses.  
> Performance results are net of applicable fees, are unaudited and reflect 
> reinvestment of income and profits.  Past performance is no guarantee of 
> future results. All financial data and other information are not warranted as 
> to completeness or accuracy and are subject to change without notice.
> 
> 
> 
> Any comments or statements made herein do not necessarily reflect those of 
> Ada Investment Management LP and its affiliates. This transmission may 
> contain information that is confidential, legally privileged, and/or exempt 
> from disclosure under applicable law. If you are not the intended recipient, 
> you are hereby notified that any disclosure, copying, distribution, or use of 
> the information contained herein (including any reliance thereon) is strictly 
> prohibited. If you received this transmission in error, please immediately 
> contact the sender and destroy the material in its entirety, whether in 
> electronic or hard copy format.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to