Python-Can';t调用只传递自参数的方法

Python-Can';t调用只传递自参数的方法,python,Python,在Python2.7下 如何处理那些只传递一个参数“自我”的方法 我得到的错误是: Traceback (most recent call): File "..." ... ... api = twitter.Api(consumer_key=keys()['consumer_key'], TypeError: keys() takes exactly 1 argument (0 given) 欢迎任何想法。您需要调用实例方法keys()是一种方法,您可以对每

在Python2.7下

如何处理那些只传递一个参数“自我”的方法

我得到的错误是:

Traceback (most recent call):
    File "..." ...
    ...
     api = twitter.Api(consumer_key=keys()['consumer_key'],
    TypeError: keys() takes exactly 1 argument (0 given)

欢迎任何想法。

您需要调用实例方法
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

您需要调用实例方法
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
keys()
是类的一个方法。要自动传递
self
参数,必须按以下方式调用它:

c = MyTwitterClass()
keys = c.keys()
因此,我建议您在类中添加一个
get\u 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()
是类的一个方法。要自动传递
self
参数,必须按以下方式调用它:

c = MyTwitterClass()
keys = c.keys()
因此,我建议您在类中添加一个
get\u 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()

这是一个实例方法。它需要在一个实例上调用,比如
twitterObject.keys()
,您能验证问题中的缩进是否与实际代码的缩进匹配吗?这是一个实例方法。它需要在一个实例上调用,比如
twitterObject.keys()
你能验证你问题中的缩进是否与实际代码的缩进一致吗?这就是答案!谢谢,不客气!如果这个答案对你有帮助,记得接受它;)简单有效+1:)这就是答案!谢谢,不客气!如果这个答案对你有帮助,记得接受它;)简单有效+1:)