我有一个从GitHub API获取信息的功能。
问题是,如果包含User
和Repo
的API不存在,它将返回{message , "Not Found"}
因此,我正在运行一个while loop
,它一直在查找,直到正确输入了用户名和存储库为止,因此API返回正确的信息。
问题在于,如果正确,while
循环就会中断,因为message
键不再存在
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
class User:
def __init__(self, json_def):
self.__dict__ = data
user = User(data)
while user.message:
print("User or Repository not found, please re-enter...")
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
有没有一种方式可以使我有一个while语句,那就是当user.message
不再存在时,它也不会因错误AttributeError: 'User' object has no attribute 'message'
我已经尝试实现while user.message != None
,但是那也不起作用。
答案 0 :(得分:0)
如何以这种方式构造代码?
class User:
def __init__(self, data):
self.__dict__ = data
user = User({})
while(true):
githubuser = input("GitHub Username: ")
githubrepo = input("GitHub Repo: ")
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
if "message" in data.keys():
continue
else:
user = User(data)
break
答案 1 :(得分:0)
尝试使用:
if hasattr(user, 'message'):
# user.message here
在您的问题中按如下方式使用它:
...
r = requests.get("https://api.github.com/repos/" + githubuser + "/" + githubrepo)
data = json.loads(r.content)
user = User(data)
if not hasattr(user, 'message'):
break