|
Original |
Translation |
|
52
|
|
Syntaxe de définition des classes
|
|
53
|
The simplest form of class definition looks like this::
|
La forme la plus simple de définition de classe ressemble à ceci ::
|
|
54
|
class ClassName: <statement-1> . . . <statement-N>
|
class NomDeLaClasse: <déclaration-1>. . . <déclaration-N>
|
|
55
|
Class definitions, like function definitions (:keyword:`def` statements) must be executed before they have any effect. (You could conceivably place a class definition in a branch of an :keyword:`if` statement, or inside a function.)
|
Les définitions de classes, comme les définitions de fonctions (définitions :keyword:`def`) doivent être exécutées avant d'avoir un effet. (Vous pouvez tout à fait placer une définition de classe dans une branche d'une instruction conditionnelle :keyword:`if` ou encore à l'intérieur d'une fonction.)
|
|
56
|
In practice, the statements inside a class definition will usually be function definitions, but other statements are allowed, and sometimes useful --- we'll come back to this later. The function definitions inside a class normally have a peculiar form of argument list, dictated by the calling conventions for methods --- again, this is explained later.
|
Dans la pratique, les déclarations dans une définition de classe seront généralement des définitions de fonctions, mais d'autres déclarations sont permises, et parfois utiles --- Nous reviendrons sur ce point plus tard. Les définitions de fonction à l'intérieur d'une classe ont normalement une forme particulière de liste d'arguments, dictée par les conventions d'appel aux méthodes --- Tout ceci sera expliqué plus tard.
|
|
57
|
|
58
|
When a class definition is left normally (via the end), a *class object* is created. This is basically a wrapper around the contents of the namespace created by the class definition; we'll learn more about class objects in the next section. The original local scope (the one in effect just before the class definition was entered) is reinstated, and the class object is bound here to the class name given in the class definition header (:class:`ClassName` in the example).
|
A la fin de la définition d'une classe, un *objet classe* est créé. C'est, pour simplifier, une encapsulation du contenu de de l'espace de nom créé par la définition de classe. Nous reparlerons des objets classes dans la prochaine section. La portée locale initiale (celle qui prévaut avant le début de la définition de la classe) est réinstanciée, et l'objet de classe est lié ici au nom de classe donné dans l'en-tête de définition de classe (:class:`NomDeLaClasse` dans l'exemple).
|
|
59
|
|
|
|
60
|
Class objects support two kinds of operations: attribute references and instantiation.
|
Les objets classe prennent en charge deux types d'opérations: des références à des attributs et l'instanciation.
|
|
61
|
*Attribute references* use the standard syntax used for all attribute references in Python: ``obj.name``. Valid attribute names are all the names that were in the class's namespace when the class object was created. So, if the class definition looked like this::
|
Les *références d'attributs* utilisent la syntaxe standard utilisée pour toutes les références d'attributs en Python: ``obj.nom``. Les noms d'attribut valides sont tous les noms qui se trouvaient dans l'espace de noms de la classe quand l'objet classe a été créé. Donc, si la définition de classe ressemble à ceci ::
|