The decorate() proposal was that no new syntax be implemented -- instead a magic function that used introspection to manipulate the following function. Both Jp Calderone and Philip Eby produced implementations of functions that did this. Guido was pretty firmly against this -- with no new syntax, the magicness of a function like this is extremely high:
A veduta is a highly detailed, usually large-scale painting of a cityscape or some other vista. This genre of landscape originated in Flanders, where artists such as Paul Bril painted vedute as early as the 16th century. As the itinerary of the Grand Tour became somewhat standardized, vedute of familiar scenes like the Roman Forum or the Grand Canal recalled early ventures to the Continent for aristocratic Englishmen. In the later 19th century, more personal impressions of cityscapes replaced the desire for topographical accuracy, which was satisfied instead by painted panoramas.
Now, assume one also desires the ability to add borders to windows. Again, the original Window class has no support. The ScrollingWindow subclass now poses a problem, because it has effectively created a new kind of window. If one wishes to add border support to many but not all windows, one must create subclasses WindowWithBorder and ScrollingWindowWithBorder etc. This problem gets worse with every new feature or window subtype to be added. For the decorator solution, we simply create a new BorderedWindowDecorator—at runtime, we can decorate existing windows with the ScrollingWindowDecorator or the BorderedWindowDecorator or both, as we see fit. Notice that if the functionality needs to be added to all Windows, you could modify the base class and that will do. On the other hand, sometimes (e.g., using external frameworks) it is not possible, legal, or convenient to modify the base class.
Action painting, sometimes called gestural abstraction, is a style of painting in which paint is spontaneously dribbled, splashed or smeared onto the canvas, rather than being carefully applied. The resulting work often emphasizes the physical act of painting itself as an essential aspect of the finished work or concern of its artist. The style was widespread from the 1940s until the early 1960s, and is closely associated with abstract expressionism (some critics have used the terms "action painting" and "abstract expressionism" interchangeably).
To calculate the tenth Fibonacci number, you should really only need to calculate the preceding Fibonacci numbers, but this implementation somehow needs a whopping 177 calculations. It gets worse quickly: 21891 calculations are needed for fibonacci(20) and almost 2.7 million calculations for the 30th number. This is because the code keeps recalculating Fibonacci numbers that are already known.
A still life is a work of art depicting mostly inanimate subject matter, typically commonplace objects—which may be either natural (food, flowers, plants, rocks, or shells) or man-made (drinking glasses, books, vases, jewelry, coins, pipes, and so on). With origins in the Middle Ages and Ancient Greek/Roman art, still life paintings give the artist more leeway in the arrangement of design elements within a composition than do paintings of other types of subjects such as landscape or portraiture. Still life paintings, particularly before 1700, often contained religious and allegorical symbolism relating to the objects depicted. Some modern still life breaks the two-dimensional barrier and employs three-dimensional mixed media, and uses found objects, photography, computer graphics, as well as video and sound.
In this snippet we have a class hierarchy with a SimpleMessage at the top. The SimpleMessage class has a constructor that accepts a content string as well as two methods: GetMessage; and, PrintMessage. Down the hierarchy we have three subclasses: ExcitedMessage; QuizzicalMessage; and, ExcitedAndQuizzicalMessage. The only difference in the subclasses is that they override the SimpleMessage constructor to change the content string and append various exclamations. When we instantiate various message objects, using the same content string, and iterate over them, each has their own unique output.
This code works for our purposes but it’s not exactly dynamic. If we wanted our initial simpleMsg object to sometimes act excited and sometimes quizzical, we could only do so by instantiating entirely new objects from the relevant subclass. Moreover, the ExcitedAndQuizzicalMessage is really just a combination of ExcitedMessage and QuizzicalMessage and probably shouldn’t have its own class. To fix these problems, let’s now return to the decorator pattern and see how it might help us.
The .__init__() method must store a reference to the function and can do any other necessary initialization. The .__call__() method will be called instead of the decorated function. It does essentially the same thing as the wrapper() function in our earlier examples. Note that you need to use the functools.update_wrapper() function instead of @functools.wraps.
Color, made up of hue, saturation, and value, dispersed over a surface is the essence of painting, just as pitch and rhythm are the essence of music. Color is highly subjective, but has observable psychological effects, although these can differ from one culture to the next. Black is associated with mourning in the West, but in the East, white is. Some painters, theoreticians, writers and scientists, including Goethe, Kandinsky, and Newton, have written their own color theory.