W Pythonie mam dziedzictwo modułu Utils
metodą legacy
, taką:
@staticmethod
def legacy(users, some_data, other_data):
j=0
for _ in users.keys():
do_something([{'a': some_data[j], 'b': other_data[j]}])
j=j+1
Piszę nową logikę, gdzie istnieje tylko users
i some_data
i other_data
nie istnieje.
Zastanawiam się nad przekazaniem w generatorze / metodzie prześmiewczej, abym mógł zrobić:
Utils.legacy(users, some_data, magic)
Które ustawia {'b': magic[j]}
, biorąc pod uwagę określony {x1}}.
Czy istnieje sposób na wdrożenie magic
przy użyciu generatora / niektórych szyjki?
Uwagi:
- Nie można zmienić właściwego kodu
- Powyższe uproszczone pytanie można rozwiązać, przechodząc w wielkości użytkowników
dict
, ale szukam bardziej ogólnego rozwiązania.
1 odpowiedź
Wystarczy potrzebować klasy z metodą {X0}}, która nie wprowadza żadnych ograniczeń na jego argument.
class Foo(object):
def __getitem__(self, key):
pass
Utils.legacy(users, some_data, Foo())
Wymień pass
za pomocą return foo
dla dowolnego elementu symbolicznego {x2}} chcesz.
Lub, na drugiej myśli użyj collections.defaultdict
.
from collections import defaultdict
Utils.legacy(users, some_data, defaultdict(lambda: None))
(Lub użyj dowolnej innej funkcji zerowej argumentu, aby zapewnić domyślną wartość zamiast lambda: None
.)
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.