私はPythonの初心者ですので、これは簡単ですが、私は許してください、これまでのところ答えを見つけることができませんでした。このエラーメッセージが表示されるのはなぜですか?クラス__init__関数で作成されたオブジェクトにアクセスすることはできません:
#define a class containing a variable and a method
#automatically generate n instances called AA,BB, CC each containing as
#variable the letter's number (a=1, b=2 etc.)
#define a function returning "my name is BB and my var is 2"
n=5
class Letters(object):
def __init__(self, name, var):
self.var=var
self.name = name
def hello(self):
print('my name is %s and my var is %d'%(self.name, self.var))
for x in range(0,n):
y=chr(x+97).upper()*2
y=Letters(y,x+1)
y.hello()
print(BB.var)
そして、私が作成されたオブジェクトを示唆して、この出力を取得、まだ私はBBオブジェクトとそのVARにアクセスすることはできません...
my name is AA and my var is 1
my name is BB and my var is 2
my name is CC and my var is 3
my name is DD and my var is 4
my name is EE and my var is 5
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-103-600f444742c0> in <module>()
13 y=Letters(y,x+1)
14 y.hello()
---> 15 print(BB.var)
NameError: name 'BB' is not defined
どれ説明?
はい。 'BB'という名前の変数はありません。あなたの 'Letter'オブジェクトの1つに*文字列' 'BB ''に割り当てられた 'name'属性がありますが、ここにもそこにもありません。 –
インスタンスに' name'属性があるという事実値「BB」は、識別子「BB」が存在するか、またはそのインスタンスへの参照であることを意味しません。私はhttps://nedbatchelder.com/text/names.htmlを読むことをお勧めします – jonrsharpe
私はdownvotesが過度に厳しいと思う。質問自体は、典型的な最初の質問よりもはるかに優れています。問題を再現し、エラーメッセージとスタックトレースを提供する小さな自己完結型の例を提供します。 –