À propos de _ et __

Je vais le décrire comme un mémo.

À propos de "_function"

Python n'a pratiquement aucun attribut privé, mais vous pouvez définir une fonction en interne avec _

module/func.py


def _func():
  return something

module/__init__.py


from .module import func

Dans le cas ci-dessus

test.py


from module import *

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

Depuis M import *, les fonctions commençant par un trait de soulignement ne sont pas importées Mais,

module/func.py


class Net():

  def _func(self):
    return 'something'

module/__init__.py


from .module import Net

Dans le cas ci-dessus

test.py


from module import *

print(Net()._func())

Peut être appelé.

Autrement dit, dans l'appel __init __. Py à ʻimport *`,

module/__init__.py


from .module import _variable

Parce que cela ne peut pas être décrit.

※important _Func () peut être utilisé sauf s'il est décrit comme import *

À propos de la «fonction __»

Bien sûr, il a également les fonctions expliquées ci-dessus et appelle le mécanisme de transformation des noms. À l'origine, le nom mécanisme de mutilation Ceci a pour but d'éviter les conflits de noms entre la classe parent et la classe enfant.

module/func.py


class Net():

  def __func(self):
    return 'something'

module/__init__.py


from .module import Net

Dans le cas ci-dessus

test.py


from module import *

print(Net()._Net_func())

Au lieu d'appeler _Net_func (), vous pouvez créer un pseudo attribut privé

À propos de la «fonction \ _ \ _ \ _ \ _»

Devenez une méthode magique.

Il existe des méthodes magiques telles que «init», «call» et «iter». Cela vous permet d'écrire votre classe proprement. Ne le définissez pas vous-même dans un développement normal.

Recommended Posts

À propos de _ et __
À propos de la validation croisée et de la valeur F
Ceci et cela à propos de pd.DataFrame
Linux (À propos des fichiers et des répertoires)
À propos des objets et des classes Python
À propos des variables et des objets Python
À propos des fichiers et des processus LINUX
À propos du groupe Raid et du LUN
À propos de la fonction fork () et de la fonction execve ()
À propos de la déconstruction et de la déconstructibilité de Django
À propos de Python, len () et randint ()
À propos de la date et du fuseau horaire Python
À propos du ratio de Sharpe et du ratio de Sortino
À propos de Python et des expressions régulières
À propos de http.Handle () et http.NewServeMux (). Handle ()
Python # À propos de la référence et de la copie
À propos de Python sort () et reverse ()
À propos de LangID
À propos de virtiofs
À propos de python-apt
À propos de l'autorisation
À propos de sklearn.preprocessing.Imputer
À propos de Gunicorn
À propos de l'installation des séries Pwntools et Python2
À propos de requirements.txt
À propos des paramètres régionaux
Résumé et erreurs courantes sur cron
À propos de l'axe = 0, axe = 1
À propos de Python dict et des fonctions triées
À propos de l'importation
À propos de Python et Cython dtype
À propos des thèmes MkDocs et de leurs coutumes
À propos de Python Pickle (cPickle) et Marshal
[Python] À propos des classes Executor et Future
À propos de Python, à partir et à l'importation, comme
À propos de numpy
À propos de pip
À propos de Linux
À propos de numpy.newaxis
À propos d'Endian
À propos de Linux
À propos de l'importation
À propos de Linux
À propos de cv2.imread
À propos de wxPython
À propos de la gestion des packages avec conda et pip
Mémorandum sur les paramètres de régression et de classification binomiale
À propos du sensor_mode et de l'angle de vue de la picamera
À propos des erreurs lors de l'installation et de l'exécution de PyInstaller
À propos des expressions de signal, de connexion et de lambda de PyQt
Notes personnelles et liens sur l'apprentissage automatique ① (Machine learning)
[SSH] À propos de l'authentification par clé publique et EC2
Découvrir les autorisations de fichiers et les super utilisateurs
À propos de la relation entre Git et GitHub
Une histoire sur Python pop and append
À propos d'AntiDDoS Premium et de la fonction spéciale TOA
Parler d'anciennes et de nouvelles classes en Python