Ich habe eine Aufgabe zu tun, um herauszufinden, was der Code unten tut. es sieht so aus, als ob es in python2 erstellt wurde, aber ich möchte python3 verwenden. Ich habe argparse installiert, die es erfordert, und den notwendigen Dateipfad eingerichtet, aber jedes Mal, wenn ich das Programm in der Befehlszeile ausführe, bekomme ich diese Probleme.Python-Fehler NameError: Name 'Ofclass' ist nicht definiert
Traceback (most recent call last):
File "C:\Users\Name\pythonScripts\Noddy.py", line 6, in <module>
class Noddy:
File "C:\Users\Name\pythonScripts\Noddy.py", line 63, in Noddy
if __name__ == '__main__': main()
File "C:\Users\Name\pythonScripts\Noddy.py", line 57, in main
ent = Noddy.make(fools)
NameError: name 'Noddy' is not defined
Der Code ist unten.
#! python3
class Noddy:
def __init__(self, x):
self.ant = None
self.dec = None
self.holder = x
@classmethod
def make(self, l):
ent = Noddy(l.pop(0))
for x in l:
ent.scrobble(x)
return ent
def scrobble(self, x):
if self.holder > x:
if self.ant is None:
self.ant = Noddy(x)
else:
self.ant.scrobble(x)
else:
if self.dec is None:
self.dec = Noddy(x)
else:
self.dec.scrobble(x)
def bubble(self):
if self.ant:
for x in self.ant.bubble():
yield x
yield self.holder
if self.dec:
for x in self.dec.bubble():
yield x
def bobble(self):
yield self.holder
if self.ant:
for x in self.ant.bobble():
yield x
if self.dec:
for x in self.dec.bobble():
yield x
def main():
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("foo")
args = ap.parse_args()
foo = open(args.foo)
fools = [int(bar) for bar in foo]
ent = Noddy.make(fools)
print(list(ent.bubble()))
print
print(list(ent.bobble()))
if __name__ == '__main__': main()
Haben Sie den gesamten Fehler aufgenommen? Ich sehe nur einen Stacktrace? – OptimusCrime
Die Verwendung von @classmethod mit self macht einen Fehler. Verwenden Sie stattdessen cls. –
Update mit vollem Fehler –