我无法再使用我正在处理的程序并提出问题。我会先发布我的代码。
我的班级代码如下:
import requests
import json
class requestNew:
def __init__(self):
self.countrychoice = []
self.citychoice = []
def countryChoice(self):
countryc = input("Enter which country your city is in(in english): ")
self.countrychoice.append(countryc)
def cityChoice(self):
cityc = input("Enter the name of the city: ")
self.citychoice.append(cityc)
您可以看到我在def countryChoice(self):
和def cityChoice(self):
中输入了内容
我想把它从类函数和主脚本中删除。
这就是我的主要剧本的相关部分目前的样子:
from requestnew import requestNew
if __name__ == '__main__':
"""Introducion"""
print ("\nThis program lets you see a weather forecast for your choosen city.")
rq = requestNew()
while True:
print("\nWhen you have typed in country and city, press 3 in the menu to see the weather forecast for your choice.\n")
menu = input("\nPress 1 for country\nPress 2 for city\nPress 3 to see forecast\nPress 4 to exit\n")
if menu == "1":
rq.countryChoice()
elif menu == "2":
rq.cityChoice()
此时我的主语只是调用类函数,他们用输入完成工作。但是如何从课堂上输入输入信息。
正如您在我的班级中看到的那样,输入会附加到以下列表中:
def countryChoice(self):
countryc = input("Enter which country your city is in(in english): ")
self.countrychoice.append(countryc) #Here
如果我在主脚本中获得输入,是否仍然可以将输入添加到我班级的self.countrychoice.append(countryc)
中?我需要能够这样做,因为在我的班级后面我正在使用像这样的列表项:
def forecastRequest(self):
r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/" + self.countrychoice[-1] + "/" + self.citychoice[-1] + ".json")
self.data = r.json()
正如您在上面的代码中所看到的,我正在使用列表项self.countrychoice[-1] + "/" + self.citychoice[-1]
,这是为了为我的api获取正确的地址。
所以我的问题是,如何在不弄乱附加到列表的情况下将输入从类中输入到主脚本中?如果它甚至可能。
很抱歉,如果有任何解释或写不好的话。因为我是初学者,所以对我来说真的很困惑。
答案 0 :(得分:2)
您需要从方法中返回一个值:
def countryChoice(self):
countryc = input("Enter which country your city is in(in english): ")
self.countrychoice.append(countryc)
return countryc
在主脚本中,您可以选择国家/地区:
countryChoice = rq.countryChoice()
此外,您仍然可以通过访问rq.countrychoice
从列表中获取所有值。相同的推理适用于cityChoice
和rq.citychoice
。
答案 1 :(得分:1)
要从外部访问对象的属性,除了使用对象变量而不是self
之外,您可以采用与内部相同的方式进行操作。
例如,在课堂内,您可以这样做:
self.countrychoice[-1] + "/" + self.citychoice[-1]
在课外,实例存储在rq
中,你可以这样做:
rq.countrychoice[-1] + "/" + rq.citychoice[-1]
同样,在您致电rq.forecastRequest()
后,您可以rq.data
访问数据。所以,你可以这样写:
while True:
print("\nWhen you have typed in country and city, press 3 in the menu to see the weather forecast for your choice.\n")
menu = input("\nPress 1 for country\nPress 2 for city\nPress 3 to see forecast\nPress 4 to exit\n")
if menu == "1":
rq.countryChoice()
elif menu == "2":
rq.cityChoice()
elif menu == "3":
rq.forecastChoice()
for line in rq.data.splitlines():
print(line)