Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #31444
| References | <76D03718A3233B4C8CC236C169B535B5A23DFDFB43@AUSP01VMBX08.collaborationhost.net> |
|---|---|
| Date | 2012-10-16 21:51 -0400 |
| Subject | Re: overriding equals operation |
| From | Dwight Hutto <dwightdhutto@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2306.1350438716.27098.python-list@python.org> (permalink) |
On Tue, Oct 16, 2012 at 9:51 AM, Pradipto Banerjee <pradipto.banerjee@adainvestments.com> wrote: > 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, w3kschoolsname='') > 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 >>>> 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 > > > If I'm understanding correctly(quick look at it), then write a new py file and __import__ it if I'm remember correctly. Use a secondary file to rewrite the existing nature of the python code file, then import it, and utilize the remade secondary py file for your usage.. -- Best Regards, David Hutto CEO: http://www.hitwebdevelopment.com
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: overriding equals operation Dwight Hutto <dwightdhutto@gmail.com> - 2012-10-16 21:51 -0400
csiph-web