2016-01-13 48 views
2

如果我有蟒蛇...传递字符串变量通过对于Python属性

r = requests.get('https://api.github.com/user', auth=('user', 'pass')) 

我怎样才能得到它一起工作......

myvar = 'get' 
r = requests.myvar('https://api.github.com/user', auth=('user', 'pass')) 

即通过命令解析字符串?

回答

4

使用getattr

myvar = 'get' 
getattr(requests, myvar)('https://api.github.com/user', auth=('user', 'pass')) 
+0

啊谢谢属性,而不是运营商的顶部!当我被允许时,我会更新问题并标记为正确。 –

+1

'r = self.requests.get('https://api.github.com/user',auth =('user','pass'))'get'getattr(self,requests,myvar)(' https://api.github.com/user',auth =('user','pass'))'? –

+1

@square_eyes只需用'getattr(self.requests,myvar)'替换getattr(self,requests,myvar)',其余部分是相同的。 – eumiro

0

getattr()将很好地工作,但它也意味着,用户可以指定他们选择的任何方法,你不希望暴露可能的。另一种方法是:

{ 
    "get": requests.get, 
    "post": requests.post, # maybe 
    # etc 
}[myvar]('https://api.github.com/user', auth=('user', 'pass')) 
0

OK了我的头

myvar = 'get' 
getattr(requests, myvar)('https://api.github.com/user', auth=('user', 'pass'))