report.pyPython Dekorateure unter den Wert von konstant weitergegeben
if __name__ == "__main__":
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description = "CHECK-ACCESS REPORTING.")
parser.add_argument('--input','-i', help='Filepath containing the Active Directory userlist')
parser.add_argument('--timestamp', '-t', nargs='?',const="BLANK", help='filepath with environement varible set')
args, unknownargs = parser.parse_known_args(sys.argv[1:])
timestampchecker(args.timestamp)
#checking the value of cons.DISPLAYRESULT is TRUE
main()
timestampchecker Funktion:
def timestampchecker(status):
""" Check if the timestamp is to display or not from command line"""
if status is not None:
cons.DISPLAY_TIME_STAMP = True
Diese Funktion überprüft, ob der Benutzer festgelegt haben die -t Argumente. Wenn es gesetzt ist, habe ich eine Konstante namens cons.DISPLAYRESULT auf True definiert.
Die Funktion funktioniert großartig und der konstante Wert wird auf True gesetzt. Aber in der Hauptfunktion habe ich diesen Dekorateure implementiert, die nicht den wahren Wert nehmen aber falsch
timer.py
def benchmarking(timestaus):
def wrapper(funct):
def timercheck(*args, **kwarg):
if timestaus is True:
starttime=time.time()
funct(*args, **kwarg)
if timestaus is True:
print('Time Taken:',round(time.time()-starttime, 4))
return timercheck
return wrapper
ich eine Methode eingerichtet habe in main() -Methode des Berichts .py mit den Dekoratoren oben. Das ist zum Beispiel die Klasse in report.py verwendet wird und mit über Dekorateure
class NotAccountedReport:
def __init__(self, pluginoutputpath):
""" Path where the plugins result are stored need these files"""
self.pluginoutputpath = pluginoutputpath
@benchmarking(cons.DISPLAY_TIME_STAMP)
def makeNotAccountableReport():
#some functionality
hier dekoriert ich den konstanten Wert für das Argument Dekorateur bestanden haben, die , wenn sie aufgerufen, obwohl zuvor getestet wird umgewandelt True unter falscher und damit die Dekoratoren nicht implementiert werden. Wo ist das Problem kann nicht herausfinden
Dies ist ein trivialer Punkt, aber vielleicht Ich verstehe deinen letzten Absatz nicht. Wenn Sie sagen "Ich habe den konstanten Wert an den Argument-Dekorator übergeben" meinst du '@benchmarking (const)'? Dann ist "const ist wahr" und "bool (const) ist wahr" wird unterschiedliche Ergebnisse haben. –
Ich möchte sagen, ich habe die Konstante definiert und dieser Wert ist, was die Decorators übergeben wird. Der Decorators wird nur ausgeführt, wenn dieser Wert auf 'True' gesetzt ist. Aber was passiert ist gedacht, der konstante Wert ist die Änderung zu True der Dekorateur wird zuerst geladen und nimmt die 'False' anstatt –