我目前正在尝试创建一个python脚本,在Web浏览器中打开一个URL,现在我遇到了NameError: name 'song' is not defined
import webbrowser
class Halsey:
def__init__(self):
self.song = song
def Badland():
print(" 1.Gasloine"
"2.castle"
"3.hold me down "
"4.control")
song =int(input("Plase select a number from above list"))
if song == 1 :
url="https://www.youtube.com/watch?v=jU3P7qz3ZrM";
webbrowser.open(url,new=0)
答案 0 :(得分:0)
好吧,您的song
变量仅在您班级的Badland
方法中可见。因此,您可以在定义它的同一方法中使用此变量,如下所示:
import webbrowser
class Halsey:
SONGS = (
("Gasloine", "https://www.youtube.com/watch?v=jU3P7qz3ZrM"),
("Castle", "url2"),
("Hold me down ", "url3"),
("Control", "url4"),
)
def __init__(self):
for i, song_name in enumerate(self.SONGS, 1):
print("{}. {}".format(i, song_name[0]))
song = int(input("Plase select a number from above list: "))
url = self.SONGS[song - 1][1]
webbrowser.open(url, new=0)
...或者您可以从类方法返回用户的输入,然后使用它,如下所示:
class Halsey:
SONGS = (
("Gasloine", "https://www.youtube.com/watch?v=jU3P7qz3ZrM"),
("Castle", "url2"),
("Hold me down ", "url3"),
("Control", "url4"),
)
def get_user_input():
for i, song_name in enumerate(self.SONGS, 1):
print("{}. {}".format(i, song_name[0]))
return int(input("Please select a number from above list: "))
instance = Halsey()
users_choice_int = instance.get_user_input()
url = self.SONGS[song - 1][1]
webbrowser.open(url, new=0)
此外,您可以将变量保存在类属性self.song = int(input(...)
中,之后您可以在self.song
内的类方法中访问它,或者在instance.song
之外访问类。
注意:不要忘记潜在的无效用户输入,您可以将song = int(input...
包裹在try/except
。