On 2012-10-29, Johannes Bauer <dfnsonfsdu...@gmx.de> wrote: > I'm currently looking for a good solution to the following problem: I > have two classes A and B, which interact with each other and which > interact with the user. Instances of B are always created by A. > > Now I want A to call some private methods of B and vice versa (i.e. > what C++ "friends" are), but I want to make it hard for the user to > call these private methods.
The Python way of telling a user not to call certain methods is to prefix their names with an underscore. The double-underscore thing that munges the names is just telling that a bit louder -- but they're still free to ignore that advice. > Currently my ugly approach is this: I delare the internal methods > private (hide from user). Then I have a function which gives me a > dictionary of callbacks to the private functions of the other > objects. This is in my opinion pretty ugly (but it works and does > what I want). By "decleare them privide" do you mean using __ASDF__ name-munging? It sounds to me like you're just making life hard on yourself. > I'm pretty damn sure there's a nicer (prettier) solution out there, > but I can't currently think of it. Do you have any hints? IMO, the "right" thing to do in Python is to use single underscore names for methods that you intend to be called by "friend" modules (is that correct C++ lingo?) but don't intend to be called by the end-user. -- Grant Edwards grant.b.edwards Yow! I just had a NOSE at JOB!! gmail.com -- http://mail.python.org/mailman/listinfo/python-list