Perl-Objekt und Python-Klasse Teil 1.

Kontrast zu "Perl".

Grundlegend 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()

Grundlegend 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())

Hash (Wörterbuch) Argumente

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())

Rückrufen

Wird durch ein etwas ernstes Beispiel ersetzt

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

Perl-Objekt und Python-Klasse Teil 2.
Perl-Objekt und Python-Klasse Teil 1.
Python: Klassen- und Instanzvariablen
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Python-Klassen- und Instanzvariablen
Python-Klassendefinitionen und Instanzbehandlung
Zuweisungen und Änderungen in Python-Objekten
Untersuchen Sie die Klasse eines Objekts mit Python
AM-Modulation und Demodulation mit Python Part 2
FM-Modulation und Demodulation mit Python Part 3
[Python] Unterschied zwischen Klassenmethode und statischer Methode
FM-Modulation und Demodulation mit Python Part 2
Apropos Python-Klassenattribute und Metaklassen
QGIS + Python Teil 2
[Python] -Klasse, Instanz
"Kanrika" die Python-Klasse
Über Python, Klasse
QGIS + Python Teil 1
Python: Scraping Teil 1
Python-Klasse, Instanz
# Python-Grundlagen (Klasse)
Lösung Wenn Sie Python 3.6 oder höher verwenden, benötigen Sie die enum34-Bibliothek ebenfalls nicht. Deinstallieren Sie sie daher und verwenden Sie das Standard-Enum-Modul. Enum34 deinstallieren Führen Sie nach der Deinstallation von enum34 erneut `pip install optuna` aus und Sie haben Optuna erfolgreich installiert! Python, pip, Python3, enum, OptunaPython3 Beginn Teil 1
Python: Scraping Teil 2
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Ich habe eine Klasse in Python3 und Java geschrieben
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
Probleme mit pseudo-privaten Python-Variablen und Klassenvererbung
[Python] Klassentyp und Verwendung des datetime-Moduls
[Python] Komprimieren und dekomprimieren
Über Klasse und Instanz
Python-Syslog-Wrapper-Klasse
Python-Klasse (Python-Lernnotiz ⑦)
Python- und Numpy-Tipps
Das einfachste Python-Memo in Japan (Klassen und Objekte)
[Python] Pip und Wheel
Fallklasse in Python
[Python] Konvertieren Sie Allzweckcontainer und Klasse ineinander
Python Iterator und Generator
[Python] Klassenvererbung (super)
Python selbst erstellte Klassensortierung
Grundmethode der [Python] -Klasse
Python-Pakete und -Module
Vue-Cli- und Python-Integration
[Python] Klassenvererbung, überschreiben
Python-Eingabe und Ausgabe
Python und Ruby teilen sich
Python Basic Memorandum Teil 2
Python-Subprozess-Wrapper-Klasse
Python-Grundnotiz - Teil 2
Klassen- und statische Methoden
Python asyncio und ContextVar
Python-Grundnotiz - Teil 1
YOLO Python-Wrapper-Klasse
Klassennotation in Python
Liste der Python-Ausnahmeklassen
Beispiel für das Abrufen des Modulnamens und des Klassennamens in Python
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt