Hi Pythonistas What's the correct way to define/access methods of a member variable in a class pointing to an object?
For example, I have a class Foo that has a method foo_method: class Foo: def foo_method(self): return 'bar' Now, in another class Bar, I'd like to store an object to this class (I do not want Bar to inherit Foo). What is the correct/recommended way to define class Bar? class Bar: def __init__(self): self.foo = Foo() # OR class Bar: def __init__(self): self.foo = Foo() def bar_method(self): return self.foo.bar() The former will allow me to use: x = Bar() x.foo.foo_method() But, with this I'm directly accessing methods of a member variable (strong coupling). The benefits I see with this approach are: - I don't have to wrap every new method that gets added to class Foo. - Bar may contain more member variables pointing to other classes. Not wrapping them keeps Bar smaller and manageable in size. - The auto-completion facility from IDE (PyCharm, etc.) or IPython helps inspect bar like a menu (x.foo) followed by a sub-menu ( x.foo.foo_method(), x.bar.foobar(), etc.) making it easier to develop code. - Functional programming look-n-feel (not sure if this a pro or con) The cons are strong coupling, not encapsulating internal details of foo, etc. I wanted to check if this a recommended practice? And/or if there are any guidelines related to this (kind of implementing a composite pattern)? There may be more classes (Bat(), etc.) in future and I'd like to extend Foo in future to store an object of these classes. Foo() is a part of a library and my intent is to make Foo() as the entry point for the target users (to allow them auto-completion via dotted notation) rather than having them remember all the classes Bar(), Bat(), etc. Any inputs/pointers will be highly appreciated! Regards Sharad PS> I've posted this in SO at http://stackoverflow.com/questions/39231932/whats-the-correct-way-to-access-methods-of-a-member-variable-in-a-class-pointin/39237874#39237874 but I'm looking for more information/ideas/thoughts/opinions on this. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor