• STATISTIQUES
  • Il y a eu un total de 0 membres et 28019 visiteurs sur le site dans les dernières 24h pour un total de 28 019 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [EN] Framework Metasploit
    Le Framework Metasploit est un logiciel gratuit, open source de tests de pénétration développ&ea...
    Vulnérabilités
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking

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