Mis a jour le 2017-05-06, 22:22

Classes

Les bases

namespaces et scopes :
Définition de classe :
class MyClass:
    "a simple class"
    n = 0
    def myMethod(self, a):
        return 2 * a * self.myField
  
le code doit être executé avant que la classe ne soit définie (la définition peut très bien être à l'intérieur d'une fonction.
Constructeur : s'il existe, il doit s'appeler __init__ :
Définition d'une méthode :
Instanciation d'une classe :
Appel d'un champ ou d'une méthode : si x est de la classe MyClass :
On ne peut pas avoir plusieurs méthodes de même nom et de signatures différentes.
Pour voir le constructeur d'une classe MyClass qui est définie dans le module (fichier) MyClass (sans avoir besoin de le qualifier complètement), faire :
from MyClass import MyClass
(mais il peut aussi être défini dans un fichier qui ne s'appelle pas du nom de la classe, par exemple myModule et alors il faut faire : from myModule import MyClass
Variables privées :

Héritage et reflexion

Héritage :
python supporte l'héritage multiple :
Classe object :
Fonctions pour tester l'appartenance aux classes :
Pour avoir le nom de la classe d'un objet :
Pour trouver la hiérarchie des classes pour un objet donné :
On peut accéder par noms aux champs et méthodes d'un objet :

Champs et méthodes statiques

Champs statique d'une classe :
Méthode statique d'une classe :
Méthode de classe :

Divers

Méthodes et champs rajoutés à une classe ou un objet :
Méthode __new__ :
Classe singleton :
class Singleton(object):
    _instance = None

    def __new__(myClass):
        if Singleton._instance is None:
            Singleton._instance = object.__new__(myClass)

        return Singleton._instance

    def __init__(self):
        self._var = 7

    def getVar(self):
        return self._var

s1 = Singleton()
print(s1.getVar())
print(id(s1))
s2 = Singleton()
print(s2.getVar())
print(id(s2))
  
c'est le même id d'objet qui est récupéré avec les 2 constructions.
Représentation d'un objet sous forme de chaîne de caractère :
Appel au constructeur de la classe de base :

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert