[英]Python - Can't call a method passing only self argument
在python 2.7下
如何处理那些只传递一个参数“自我”的方法?
class MyTwitterClass(object):
...
def keys(self):
return {
'consumer_key': self.read_settings().get('Keys', 'consumer_key'),
"consumer_secret": self.read_settings().get('Keys', 'consumer_secret'),
"access_token_key": self.read_settings().get('Keys', 'access_token_key'),
"access_token_secret": self.read_settings().get('Keys', 'access_token_secret')
}
api = twitter.Api(consumer_key=keys()['consumer_key'],
consumer_secret=keys()['consumer_secret'],
access_token_key=keys()['access_token_key'],
access_token_secret=keys()['access_token_secret'])
我得到的错误是:
Traceback (most recent call):
File "..." ...
...
api = twitter.Api(consumer_key=keys()['consumer_key'],
TypeError: keys() takes exactly 1 argument (0 given)
任何想法都将受到欢迎。
keys()
是类的一种方法。 要自动传递self
参数,您必须这样调用:
c = MyTwitterClass()
keys = c.keys()
因此,建议您将get_api()
方法添加到您的类中:
class MyTwitterClass(object):
...
def keys(self):
return {
'consumer_key': self.read_settings().get('Keys', 'consumer_key'),
"consumer_secret": self.read_settings().get('Keys', 'consumer_secret'),
"access_token_key": self.read_settings().get('Keys', 'access_token_key'),
"access_token_secret": self.read_settings().get('Keys', 'access_token_secret')
}
def get_api(self):
keys = self.keys() # self refer to the current instance of your class
api = twitter.Api(consumer_key=keys['consumer_key'],
consumer_secret=keys['consumer_secret'],
access_token_key=keys['access_token_key'],
access_token_secret=keys['access_token_secret'])
return api
# Now, you can do :
c = MyTwitterClass()
api = c.get_api()
您需要调用实例方法。 keys()
是一个方法,您可以在每个MyTwitterClass
对象上调用,或者如果您在类本身中,则可以使用self
进行调用
obj = MyTwitterClass()
[...]
api = twitter.Api(consumer_key=obj.keys()['consumer_key'],
consumer_secret=obj.keys()['consumer_secret'],
access_token_key=obj.keys()['access_token_key'],
access_token_secret=obj.keys()['access_token_secret'])
^^^^
note this addition
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.