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