r...@zedat.fu-berlin.de (Stefan Ram) writes: > Julieta Shem <js...@yaxenu.org> writes:
[...] > 2. a. 1. Remark > > One can observe this ease especially when one defines a new > class with a standard verb and then standard procedures > "magically" use this new method, as in: > > class MyNewClass: > def __str__( self ): > return "Howdy!" > > print( MyNewClass() ) > > How can "print" possibly know about the method "__str__" > I just defined if "print" was written long before I defined > my class? <-- A beginner could ask this in bewilderment! That's a good question. > 2. b. Adding a New Verb (Procedure) in Object-Oriented Programming > > In object-oriented programming adding a new verb (a new > "procedure") is hard. Assume that now we would like to add > another verb such as "emit", say "length". All classes would > have to be changed and a new method definition for "length" > would have to be added to them! Some classes might even be > standard classes from libraries we can't easily change. > So this clearly violates the Open-Closed-Principle! > > 3. Comments > > So, this would suggest to use procedural programming when > one foresees the need to add more object-specific procedures > later and object-oriented programming when one foresees the > need to add more types later. > > The problems with OOP which make adding new verbs violate > the open-closed principle possibly would not occur in > a language where one could add new methods to a library > class in a user program. Thank you! That did clarify everything for me! (I'll find a way to read Martin's book!) -- https://mail.python.org/mailman/listinfo/python-list