-3
私は以下のコードが何をするのか把握するための作業があります。 python2で構築されたように見えますが、python3を使いたいと思います。 argparseをインストールして必要なファイルパスを設定しましたが、コマンドラインでプログラムを実行するたびにこれらの問題が発生します。PythonエラーNameError: 'ofclass'の名前が定義されていません
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
コードは以下のとおりです。
#! 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()
エラー全体を含めましたか?私はスタックトレースを見るだけですか? – OptimusCrime
@classmethodをselfとともに使用するとエラーになります。代わりにclsを使用してください。 –
フルエラーで更新 –