objet perl et classe python partie 1.

Contraste avec «perl».

Basique 1

perl


package Foo;
sub new  { bless { a => pop }, shift }
sub echo { print shift->{a}, "\n" }
1;

Foo->new("foo")->echo ;

python


class Foo(object):
    def __init__(self,a):
        self.a = a
    def echo(self):
        print(self.a)

Foo("foo").echo()

Basique 2

perl


package Foo;
sub new { bless {}, shift }
sub add { ++ shift->{c} }
1;

my $c = Foo->new ;
print $c->add . "\n" for 0 .. 9 ;

python


class Foo(object):
    def __init__(self):
        self.a = 0
    def add(self):
        self.a = self.a + 1
        return self.a

o = Foo()
for i in range(10):
    print (o.add())

Arguments de hachage (dictionnaire)

perl


package Foo;
sub new   { bless { c => 10, @_[1..$#_]}, shift }
1;

use Data::Dumper ;
my $obj = Foo->new( d => 10) ;
print Dumper $obj ;

python


class Foo(object):
    def __init__(self, **args):
        self.__dict__ = { 'c':10 }
        self.__dict__.update( args )

o = Foo(d=10)
print (vars(o))

Singleton

perl


package Foo;

my $s ;
sub new { $s ||= bless {}, shift ; }
sub add { ++ shift->{c} }

1;

my $o = Foo->new ;
my $p = Foo->new ;
print  $o . "\n";
print  $p . "\n";
print $o->add . "\n";
print $p->add . "\n";

python


class Foo(object):
    _instance = None
    def  __new__(cls):
        if cls._instance is None:
            cls._instance = object.__new__(cls)
        return cls._instance
    def __init__(self):
        self._x = 0
    def add(self):
        self._x = self._x + 1
        return self._x

o = Foo()
p = Foo()
print (id(o))
print (id(p))
print (o.add())
print (p.add())

Rappeler

Sera remplacé par un exemple légèrement sérieux

perl


package Foo;
sub new     { bless pop, shift ; } ;
sub execute { shift->(pop); }
1;

my $obj = Foo->new( sub { print $_[0] ; } ) ;
$obj->execute( 'foo' ) ;

python


#from __future__ import print_function
class Foo(object):
    def __init__(self, f):
        self._f = f
    def execute(self):
        self._f()

o = Foo(lambda : print ('foo'))
o.execute()

Recommended Posts

objet perl et classe python partie 2.
objet perl et classe python partie 1.
Python: variables de classe et d'instance
À propos des objets et des classes Python
À propos des variables et des objets Python
Variables de classe et d'instance Python
Définitions de classe Python et gestion des instances
Affectations et modifications des objets Python
Examiner la classe d'un objet avec python
Modulation et démodulation AM avec Python Partie 2
Modulation et démodulation FM avec Python Partie 3
[Python] Différence entre la méthode de classe et la méthode statique
Modulation et démodulation FM avec Python Partie 2
Parler des attributs de classe Python et des métaclasses
QGIS + Python Partie 2
[Python] classe, instance
"Kanrika" la classe python
À propos de python, classe
QGIS + Python Partie 1
Python: grattage partie 1
classe python, instance
Les bases de #Python (classe)
Python3 commence la partie 1
Python: grattage, partie 2
[python] Différence entre variable et self. Variable dans la classe
J'ai écrit une classe en Python3 et Java
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
Problème avec les variables pseudo-privées Python et l'héritage de classe
[Python] Type de classe et utilisation du module datetime
[python] Compresser et décompresser
À propos de la classe et de l'instance
classe wrapper python syslog
Classe Python (mémo d'apprentissage Python ⑦)
Astuces Python et Numpy
Le mémo Python le plus simple au Japon (classes et objets)
[Python] pip et roue
classe de cas en python
[Python] Convertit un conteneur à usage général et une classe entre eux
Itérateur et générateur Python
[Python] Héritage de classe (super)
Tri par classe Python
[python] méthode de base de la classe
Paquets et modules Python
Intégration Vue-Cli et Python
[Python] Héritage de classe, remplacement
entrée et sortie python
Python et Ruby se séparent
Mémorandum de base Python partie 2
classe de wrapper de sous-processus python
Mémo de base Python - Partie 2
Classes et méthodes statiques
Python asyncio et ContextVar
Mémo de base Python - Partie 1
Classe wrapper YOLO Python
Notation de classe en Python
Liste des classes d'exception Python
Exemple d'obtention du nom du module et du nom de la classe en Python
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse