On 2011-01-05, Inyeol <inyeol....@gmail.com> wrote: > For example: I'm writing simple class: > > class Numbers: > def __init__(self, numbers): > self._numbers = numbers > def get_all(self): > for number in self._numbers: > yield number > > If I want to add another method for yielding even numbers only, > I may use: > > def get_even(self): > for numbers in self._numbers: > if numbers % 2 == 0: > yield number > > or, I can use public method 'get_all' instead of using private > attribute '_numbers', like: > > def get_even(self): > for numbers in self.get_all(): > if numbers % 2 == 0: > yield number > > Which coding style do you prefer? I'm more toward public API > way, since it requires less code change if I refactor private > data structure later. Plz give pros and cons of these.
Decoupling a member function from its own internal state would be of little benefit. However, decoupling an interface from its implementation can be a good idea. Python provides inheritance and the NotImplmented exception to help with that. Duck-typing is another popular approach. -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list