• STATISTIQUES
  • Il y a eu un total de 0 membres et 17157 visiteurs sur le site dans les dernières 24h pour un total de 17 157 personnes!
    Membres: 2 435
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges
    [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[python] Un décorateur pour inventorier les objets
04-12-2014, 17h35 (Modification du message : 04-12-2014, 17h46 par b0fh.)
Message : #1
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
[python] Un décorateur pour inventorier les objets
Hello,

Il y a quelques jours, j'ai vu passer sur IRC une question: En python, comment itérer sur tous les objets d'une classe ?

La manière recommandée est de gérer son propre pool d'objets, parce qu'on peut difficilement prédire comment le garbage collector
va se comporter, et à quel moment un objet disparaît. Néanmoins, j'ai trouvé intéressant d'écrire la petite lib suivante:

Code PYTHON :
from weakref import WeakSet

def clique(klass):
    klass.all = WeakSet()
   
    if klass.__new__ is object.__new__:
        old = klass.__init__
        def new(self,*a,**kw):
            klass.all.add(self)
            old(self,*a,**kw)
        klass.__init__ = new
       
    else:
        old = klass.__new__
        def new(*a, **kw):
            obj = old(*a, **kw)
            klass.all.add(obj)
            return obj    
        klass.__new__ = new
       
    return klass


Cette lib définit un décorateur qui ajoute un membre statique `all` à chaque classe décorée. Il marche avec les dérivés d'objets immutables (comme les strings), et avec l'héritage multiple. Il s'utilise comme ceci:

Code :
>>> from clique import *
>>>
>>> @clique
... class Foo:
...   pass
...  
>>> a = Foo()
>>> b = Foo()
>>>
>>> list(Foo.all)
[<__main__.Foo object at 0x7ffc98477da0>, <__main__.Foo object at 0x7ffc98477c50>]

Essayons d'effacer la référence à un des deux objets:

Code :
>>> a = None
>>> list(Foo.all)
[<__main__.Foo object at 0x7ffc98477da0>, <__main__.Foo object at 0x7ffc98477c50>]

Ca n'a pas marché parce que le garbage collector n'a pas tourné. On peut le forcer manuellement:

Code :
>>> import gc
>>> gc.collect()
0
>>> list(Foo.all)
[<__main__.Foo object at 0x7ffc98477da0>]

La ça marche !
+1 (4) -1 (0) Répondre
04-12-2014, 17h50
Message : #2
thxer Hors ligne
:(){ :|:&amp; };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [python] Un décorateur pour inventorier les objets
Nickel , merci
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Python]Situer mon niveau. InforMods 19 5,624 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 1,050 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 1,286 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 1,096 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 2,752 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 1,703 03-03-2015, 10h55
Dernier message: ark
  [python] UPnP Scanner St0rn 2 1,144 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 805 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 2,530 15-08-2014, 20h26
Dernier message: sakiir
  Python : QuickBIn octarin 1 944 13-08-2014, 19h05
Dernier message: thxer

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut