• STATISTIQUES
  • Il y a eu un total de 2 membres et 30460 visiteurs sur le site dans les dernières 24h pour un total de 30 462 personnes!


    Membres: 2 604
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] SecurityFocus
    SecurityFocus a été conçu pour faciliter la discussion sur des sujets liés la sécu...
    Vulnérabilités
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges

  • 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 454 10-11-2016, 00h03
Dernier message: ZeR0-@bSoLu
  [PYTHON] un bot IRC basique darcosion 1 93 13-06-2016, 20h40
Dernier message: Yttrium
  [python] ANBU ::: TCP Session Hunter St0rn 2 163 25-02-2016, 18h45
Dernier message: otherflow
  [Python] Une autre façon de gérer les Virtualenv et Packages thxer 2 59 18-01-2016, 12h06
Dernier message: thxer
  [Python] rot script ark 9 247 08-03-2015, 00h37
Dernier message: ark
  [Python] Todo Manager ark 5 208 03-03-2015, 10h55
Dernier message: ark
  [python] UPnP Scanner St0rn 2 114 29-10-2014, 14h50
Dernier message: St0rn
  [python] Buffer Overflow : EBP et EIP St0rn 0 93 25-10-2014, 12h58
Dernier message: St0rn
  [Python] QuickHex thxer 9 208 15-08-2014, 20h26
Dernier message: sakiir
  Python : QuickBIn octarin 1 80 13-08-2014, 19h05
Dernier message: thxer

Atteindre :


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