[PYTHON] Über _ und __

Ich werde es als Memo beschreiben.

Über "_function"

Python hat praktisch kein Private-Attribut, aber Sie können eine Funktion intern mit _ definieren

module/func.py


def _func():
  return something

module/__init__.py


from .module import func

Im obigen Fall

test.py


from module import *

print(func._func())
ImportError: cannot import name 'func' from 'module.func'

Von M import * importiert keine Funktionen, die mit einem Unterstrich beginnen Aber,

module/func.py


class Net():

  def _func(self):
    return 'something'

module/__init__.py


from .module import Net

Im obigen Fall

test.py


from module import *

print(Net()._func())

Kann angerufen werden.

Das heißt, im Aufruf "__init __. Py" zum Importieren * ",

module/__init__.py


from .module import _Variable

Weil es nicht beschrieben werden kann.

※wichtig _Func () kann verwendet werden, es sei denn, es wird als Import * beschrieben

Über "__ Funktion"

Natürlich hat es auch die oben erläuterten Funktionen und nennt den Namen Mangling-Mechanismus. Ursprünglich war der Name Mangling Mechanismus Der Zweck besteht darin, Namenskonflikte zwischen übergeordneten und untergeordneten Klassen zu vermeiden.

module/func.py


class Net():

  def __func(self):
    return 'something'

module/__init__.py


from .module import Net

Im obigen Fall

test.py


from module import *

print(Net()._Net_func())

Anstatt _Net_func () aufzurufen, können Sie ein pseudo-privates Attribut erstellen

Über "\ _ \ _ Funktion \ _ \ _"

Werde eine magische Methode.

Es gibt bereits magische Methoden wie "init", "call" und "iter". So können Sie Ihre Klasse ordentlich schreiben. Definieren Sie es nicht selbst in der normalen Entwicklung.

Recommended Posts

Über _ und __
Über Kreuzvalidierung und F-Wert
Dies und das über pd.DataFrame
Linux (Über Dateien und Verzeichnisse)
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Informationen zu LINUX-Dateien und -Prozessen
Über Raid Group und LUN
Informationen zur Funktion fork () und zur Funktion execve ()
Über Djangos Dekonstruktion und Dekonstruierbarkeit
Über Python, len () und randint ()
Informationen zu Python-Datums- und Zeitzone
Über Sharpe Ratio und Sortino Ratio
Über Python und reguläre Ausdrücke
Informationen zu http.Handle () und http.NewServeMux (). Handle ()
Python # Über Referenz und Kopie
Über Python sort () und reverse ()
Über LangID
Über Tugenden
Über Python-Apt
Über die Erlaubnis
Über sklearn.preprocessing.Imputer
Über Gunicorn
Informationen zur Installation der Serien Pwntools und Python2
Informationen zu den Anforderungen.txt
Über das Gebietsschema
Zusammenfassung und häufige Fehler zu Cron
Über Achse = 0, Achse = 1
Über Python-Diktat und sortierte Funktionen
Über den Import
Über Python und Cython dtype
Über MkDocs-Themen und ihre Bräuche
Über Python Pickle (cPickle) und Marschall
[Python] Über Executor und zukünftige Klassen
Über Python, aus und importieren, als
Über Numpy
Über pip
Über Linux
Über numpy.newaxis
Über Endian
Über Linux
Über den Import
Über Linux
Über cv2.imread
Über wxPython
Über Paketmanagement mit Conda und Pip
Memorandum über Metriken für Regression und Binomialklassifikation
Über sensor_mode und Blickwinkel der Picamera
Informationen zu Fehlern bei der Installation und Ausführung von PyInstaller
Informationen zu PyQts Signal-, Verbindungs- und Lambda-Ausdrücken
Persönliche Notizen und Links zum maschinellen Lernen ① (Maschinelles Lernen)
[SSH] Informationen zur Authentifizierung mit öffentlichem Schlüssel und zu EC2
Informieren Sie sich über Dateiberechtigungen und Superuser
Über die Beziehung zwischen Git und GitHub
Eine Geschichte über Python Pop und Append
Über AntiDDoS Premium und Sonderfunktion TOA
Apropos alte und neue Klassen in Python