Vu qu'on a parlé juste avant des "décorator". Je fais ici un tout petit message pour donner un exemple sur les "descriptor", assez méconnu aussi.

http://www.developpez.net/forums/d68...urs-quoi-sert/


Les "descriptor" permettent de déclarer un attribut de classe sur lesquels on peut aussi effectuer des contrôles. C'est un peu l'équivalent des "decorator" mais pour les attributs.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from types import *
 
class MyIntProperty(object):
    def __init__(self, initval=None):
        self.val = 0
 
    def __get__(self, obj, objtype):
        return self.val
 
    def __set__(self, obj, val):
        self.val = self._isint(val)
 
    def _isint(self, val):
        if type(val) is not IntType:
            raise Exception('Parameter must be Int')
        else:
            return val
 
class MyClass(object):
    x = MyIntProperty(10)
    y = MyIntProperty()
 
 
test = MyClass()
test.x, test.y = 10, 100
print test.x, test.y
test.x, test.y = 20, 'aa'
print test.x, test.y