Ich versuche, eine wiederholte Funktionalität in Klassen (einschließlich ihrer Initialisierer) und Methoden in einer effizienten und pythonischen Weise zu implementieren.Wiederholte Funktionalität/Code in Python-Klassen, Initialisierer und Methoden
Ich Unterklassen und überschreiben Methoden (wie gesehen here). Ich habe Zähler für jede Klasse definiert und ergänzt.
Mein Code
class StructuralAnalysis(object):
def __init__(self):
self.counter_results = [] # probably a dict would be better
def generate_structural_metrics(self):
# declare counters
cnum = 0
cstr = 0
cbytes = 0
...
...
...
for node in ast.walk(self.tree):
if isinstance(node, ast.Num):
cnum += 1
elif isinstance(node, ast.Str):
cstr += 1
elif isinstance(node, ast.Bytes):
cbytes += 1
elif ...
elif ...
elif ...
self.counter_results = [cnum, cstr, cbytes, .......]
# some counters may require some further calculations
return self.counter_results
Meine Frage ist, ob die oben in einer Pythonic und/oder effiziente Art und Weise umgesetzt werden könnte; wie eine andere Klassenmethode für jeden Zähler zu haben, die jede überschriebene Methode aufrufen wird, um die erweiterte Zuweisung durchzuführen? Dies um eine - möglicherweise - große Anzahl von Zählerdeklarationen und wiederholten Code zu vermeiden. Irgendwelche Vorschläge wären großartig.
suchen Sie für Meta-Programmierung in Python? – biobirdman
@biobirdman keine Ahnung, was das ist. Ich erkunde nur die besten Ansätze für die implementierte wiederholte Funktionalität in Klassen. –