Ich werde es als Memo beschreiben.
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
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
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