Writing a class decorator is very similar to writing a function decorator. The only difference is that the decorator will receive a class and not a function as an argument. In fact, all the decorators you saw above will work as class decorators. When you are using them on a class instead of a function, their effect might not be what you want. In the following example, the @timer decorator is applied to a class:
Painters must have manual dexterity as well as steady nerves to work in high places. They should not be allergic to or bothered by paint fumes, toxic materials and spray dust. They should have a certain artistic sense in order to do a first-class job. Good eyesight and sense of color is especially important to properly mix paint to specific colors.
Two decorators (classmethod() and staticmethod()) have been available in Python since version 2.2. It's been assumed since approximately that time that some syntactic support for them would eventually be added to the language. Given this assumption, one might wonder why it's been so difficult to arrive at a consensus. Discussions have raged off-and-on at times in both comp.lang.python and the python-dev mailing list about how best to implement function decorators. There is no one clear reason why this should be so, but a few problems seem to be most divisive.

Allegory is a figurative mode of representation conveying meaning other than the literal. Allegory communicates its message by means of symbolic figures, actions or symbolic representation. Allegory is generally treated as a figure of rhetoric, but an allegory does not have to be expressed in language: it may be addressed to the eye, and is often found in realistic painting. An example of a simple visual allegory is the image of the grim reaper. Viewers understand that the image of the grim reaper is a symbolic representation of death.

The discussion continued on and off on python-dev from February 2002 through July 2004. Hundreds and hundreds of posts were made, with people proposing many possible syntax variations. Guido took a list of proposals to EuroPython 2004 [7], where a discussion took place. Subsequent to this, he decided that we'd have the Java-style [10] @decorator syntax, and this appeared for the first time in 2.4a2. Barry Warsaw named this the 'pie-decorator' syntax, in honor of the Pie-thon Parrot shootout which occurred around the same time as the decorator syntax, and because the @ looks a little like a pie. Guido outlined his case [8] on Python-dev, including this piece [9] on some of the (many) rejected forms.
Abstract painting uses a visual language of form, colour and line to create a composition that may exist with a degree of independence from visual references in the world.[29][30] Abstract expressionism was an American post-World War II art movement that combined the emotional intensity and self-denial of the German Expressionists with the anti-figurative aesthetic of the European abstract schools—such as Futurism, Bauhaus and Cubism, and the image of being rebellious, anarchic, highly idiosyncratic and, some feel, nihilistic.[31]
Painters deal practically with pigments,[6] so "blue" for a painter can be any of the blues: phthalocyanine blue, Prussian blue, indigo, Cobalt blue, ultramarine, and so on. Psychological and symbolical meanings of color are not, strictly speaking, means of painting. Colors only add to the potential, derived context of meanings, and because of this, the perception of a painting is highly subjective. The analogy with music is quite clear—sound in music (like a C note) is analogous to "light" in painting, "shades" to dynamics, and "coloration" is to painting as the specific timbre of musical instruments is to music. These elements do not necessarily form a melody (in music) of themselves; rather, they can add different contexts to it.
×