On Fri, Feb 12, 2016 at 3:15 PM, Paulo da Silva <p_s_d_a_s_i_l_v_a...@netcabo.pt> wrote: > Às 03:49 de 12-02-2016, Chris Angelico escreveu: >> On Fri, Feb 12, 2016 at 2:13 PM, MRAB <pyt...@mrabarnett.plus.com> wrote: >>> Apart from all of the other answers that have been given: >>> > ... >> >> Simpler to let the language do that for you: >> >>>>> import sys >>>>> p1 = sys.intern('foo/bar') >>>>> p2 = sys.intern('foo/bar') >>>>> id(p1), id(p2) >> (139621017266528, 139621017266528) >> > > I didn't know about id or sys.intern :-) > I need to look at them ... > > As I can understand I can do in MyFile class > > self.dirname=sys.intern(dirname) # dirname passed as arg to the __init__ > > and the character string doesn't get repeated. > Is this correct?
Correct. Two equal strings, passed to sys.intern(), will come back as identical strings, which means they use the same memory. You can have a million references to the same string and it takes up no additional memory. But I reiterate: Don't even bother with this unless you know your program is running short of memory. Start by coding things in the simple and obvious way, and then fix problems only when you see them. ChrisA -- https://mail.python.org/mailman/listinfo/python-list