W języku Python nazwa self
to , a nie. Jest to tylko konwencja dla nazwy parametru, dlatego istnieje self
parametr w __init__
. (Faktycznie, __init__
nie jest wyjątkowy albo, w szczególności robi nie faktycznie utworzyć obiekt ... to już historia)
C("abc").process()
tworzy instancję C
, patrzy metodę process
w klasie C
, i wywołuje tę metodę z instancją C
jako pierwszym parametrem. Tak więc kończy się parametrem self
, jeśli go podałeś.
Nawet jeśli miałeś ten parametr, nie możesz pisać czegoś takiego jak def process(self, formatting = self.formatting)
, ponieważ self
nie ma jeszcze zasięgu w punkcie, w którym ustawiłeś wartość domyślną. W języku Python wartość domyślna parametru jest obliczana podczas kompilacji funkcji i "utknięcia" w funkcji. (Z tego samego powodu, jeśli używasz wartości domyślnej, takiej jak []
, lista zapamiętuje zmiany między połączeniami do tej funkcji.)
Jak mogę to wykonać?
Tradycyjnym sposobem jest domyślne użycie None
i sprawdzenie tej wartości i zastąpienie jej wewnątrz funkcji.Może się okazać, że trochę bezpieczniej jest zrobić specjalną wartość do tego celu (instancja object
jest wszystkim, czego potrzebujesz, o ile ukryjesz ją, aby kod wywołujący nie używał tej samej instancji) zamiast None
. Tak czy inaczej, powinieneś sprawdzić tę wartość za pomocą is
, a nie ==
.
nie używaj formatu jako nazwy zmiennej, ponieważ jest to wbudowana funkcja w pythonie. – Yajushi
Edytowanie błędu "self" w "metodzie procesu" –