python's OOP question

neoedmund neoedmund at gmail.com
Wed Oct 18 10:22:19 CEST 2006


Bruno Desthuilliers wrote:
> neoedmund wrote:
> (snip)
> > So I can reuse a method freely only if it's worth reusing.
> > For the word "inheritance", in some aspect, meanings reuse the super
> > class, with the condition: must reuse everything from super class.
>
> Not really. In fact, inheritance *is* a special case of
> composition/delegation. A 'child' class is a class that has references
> to other classes - it's 'parents' -, and  then attributes that are not
> found in the instance or child class are looked up in the parents
> (according to mro rules in case of multiple inheritance). And that's all
> there is.
>
> > It's lack of a option to select which methods are to be reused.
>
> Methods not redefined in the 'child' class or it's instance are
> 'reusable'. Now they are only effectively 'reused' if and when called by
> client code. So the 'option to select which methods are to be reused' is
> mostly up to both the 'child' class and code using it.
>
> > this is something should be improved for general OOP i think.
> > So to answer " What is your problem with having the other extra methods
> > too ?",
> > in real life, a class is not defined so well that any method is needed
> > by sub-class.
>
> Then perhaps is it time to refactor. A class should be a highly cohesive
> unit. If you find yourself needing only a specific subset of a class, it
> may be time to extract this subset in it's own class. Given Python's
> support for both multiple inheritance and composition/delegation, it's
> usually a trivial task (unless you already mixed up too many orthogonal
> concerns in your base class...).
>
> --
> bruno desthuilliers
> python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
> p in 'onurb at xiludom.gro'.split('@')])"

I donnot agree with your "it's time to refactory" very much, man has
probly never has time to do such things. suppose a system is working
soundly, you maybe has no time or motivation to do refactory instead of
having a vocation to a island. it's easy to say, at lease myself has
not the experience to do such things, :-)




More information about the Python-list mailing list