私はクラスをセットアップし、1つのifステートメントで変数を受け入れて、それを出力します。クラスはPythonでグローバルではないようです
class npc: #class for creating mooks
def __init__(self, name):
self.name = name
def npc_iq (self,iq):
self.iq = []
def npc_pp (self,pp):
self.pp = []
def npc_melee (self, melee):
self.melee = []
def npc_ct (self, ct):
self.ct = []
声明
if menu_option == 1:
print "Choose melees for npc"
init_bonus = random.randint(0,2)
char_PP = random.randint(7,15)
char_iq = random.randint(7,15)
npc_Melees = int(raw_input(prompt))
combat_time = math.floor((round_attacks - init_bonus - math.floor(char_PP/2) - math.floor(char_iq/2))/npc_Melees)
#function for calculating sequence number
print "combat time is"
print combat_time
mook = "mook%s" % counter # adds different mook names to program
mook = npc(mook)
mook.iq = (char_iq)
mook.pp = (char_PP)
mook.melee = (npc_Melees)
mook.ct = (combat_time)
counter += 1
場合には、この中で正常に動作します。しかし、この文で、それはクラスではなく、CTで名前を印刷します。ていない場合場合
elif menu_option ==4:
print "Printing out all mooks"
print
printcount = counter -1
while printcount != 0:
mookprint = "mook%s" % printcount
mookprint = npc(mookprint)
print mookprint.name
print mookprint.ct
print
printcount -= 1
'name'を出力した場合、' mookprint'は 'None'ではありません。あなたは実際に 'ct'が実際に値を持っていると確信していますか? –
最初のifループでctの値が正常に出力されます。私はAttributeErrorのエラーを取得します。他の行を実行すると、npcインスタンスには属性 'ct'がありません。 – user1267762
あなたはクラスの仕組みについていくつかの誤解があるようです。たとえば、オブジェクトのctメンバを設定することなく、moodprint.ctを出力しています。 –