python .pyファイルにすると動かない
解決したいこと
一つのセルで実行すると正常に動作するのですが、
オブジェクト部分を .pyファイルへコピーし
インポートして時効するとエラーになります。
発生している問題・エラー
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [1], in <module>
11 ticket_number = fan1_ticket_amount
13 fan1_name = Fan(fan1_name, fan1_sex, fan1_age, {})
---> 15 fan1_name.buy_ticket()
18 fan1_name.have_ticket()
File ~/environment/Band/fan.py:18, in Fan.buy_ticket(self)
17 def buy_ticket(self):
---> 18 self.inventory[ticket_band_name] = ticket_number
NameError: name 'ticket_number' is not defined
該当するソースコード
#failname fan.py
class Fan:
def __init__(self, name, sex, age, inventory):
self.name = name
self.sex = sex
self.age = age
self.tickets = 0
self.level = 1
self.inventory = {}
def have_ticket(self):
print(f"{self.name}の所持しているチケットは")
print(self.inventory.items())
def buy_ticket(self):
self.inventory[ticket_band_name] = ticket_number
from fan import Fan
fan1_name = input("あなたの名前を入力:")
fan1_sex = input("あなたの性別を入力:")
fan1_age = int(input("あなたの年齢を入力:"))
fan1_buy_ticket = input("チケットを買いたいバンド名:")
ticket_band_name = fan1_buy_ticket
fan1_ticket_amount = int(input("何枚買いますか:"))
ticket_number = fan1_ticket_amount
fan1_name = Fan(fan1_name, fan1_sex, fan1_age, {})
fan1_name.buy_ticket()
fan1_name.have_ticket()
自分で試したこと
.pyに分けず、同じセルで実行すると正常に動きます。。
class Fan:
def __init__(self, name, sex, age, inventory):
self.name = name
self.sex = sex
self.age = age
self.tickets = 0
self.level = 1
self.inventory = {}
def have_ticket(self):
print(f"{self.name}の所持しているチケットは")
print(self.inventory.items())
def buy_ticket(self):
self.inventory[ticket_band_name] = ticket_number
fan1_name = input("あなたの名前を入力:")
fan1_sex = input("あなたの性別を入力:")
fan1_age = int(input("あなたの年齢を入力:"))
fan1_buy_ticket = input("チケットを買いたいバンド名:")
ticket_band_name = fan1_buy_ticket
fan1_ticket_amount = int(input("何枚買いますか:"))
ticket_number = fan1_ticket_amount
fan1_name = Fan(fan1_name, fan1_sex, fan1_age, {})
fan1_name.buy_ticket()
fan1_name.have_ticket()
.pyファイルにオブジェクト部分を分けたいのですがエラーの原因がどうしてもわかりません。
どなたかヒントを教えていただけるとありがたいです。