他の方がおっしゃっているように「再現できる最小限のコード」を示すというのはQ&Aをする際に非常に大切な事項だと思います。そうせずに一部だけ提示している質問もあるのですがそれは「質問者がその部分だけで閲覧者に質問内容が伝わる」ということを確信できるだけの知識をお持ちの場合ではないでしょうか?
NameErrorは文法や言語仕様に直接起因する問題だと思うので発生した文脈を明らかにするため「再現する最小限のコードを書いてみて、その全体を提示する」のがよいのですが・・・
考えてみると最小限の再現コードが書けるためにはある程度の「エラーの原因」が予想できることが前提になるかも知れません。文法に関する知識不足が課題の場合はコードを縮めること自体が難しいだろうと思います。質問者さん側にとってつらいところかも知れません。
そこで・・・ご質問のコード自体は大変短いものなので当たりはずれはさておき、敢えて「あり得る可能性」を上げてみます。
ひょっとして初めてクラス定義をしようとしてたりしませんか?
python
1class MyClass:
2 def bbb():
3 return '戻り値'
4
5 async def aaa():
6 xxx = bbb() # これでは参照できずNameErrorとなります
7
8===>次のように書きます。
9
10class MyClass:
11 def bbb(self):
12 return '戻り値'
13
14 async def aaa(self):
15 xxx = self.bbb()
16
17もしくは
18
19class MyClass:
20 @staticmethod
21 def bbb(self):
22 return '戻り値'
23
24 async def aaa(self):
25 xxx = MyClass.bbb()
26
27もしくは
28
29class MyClass:
30 @staticmethod
31 def bbb():
32 return '戻り値'
33
34 async def aaa(self):
35 xxx = MyClass.bbb()
36
NameErrorだとawait/asyncは無関係と判断したので上記はそれを除いて書いています。またaaaはインスタンスメソッドとしましたが、もちろんclassmethodにしたりstaticmethodとして定義できます。
Javaなど他の言語ではメソッドのレシーバーを明示的に引数には書きません。そういう言語に慣れていた自分はPythonのクラス定義をする際によくselfを付け忘れて書こうとしたりしてました。それを思い出してあえて「初めてクラス定義をしようとしている」と想定してみたのですが・・・少々苦しい想定だったかも知れません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。