Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类型错误:';str';对象不可调用。即使没有所谓的';str';_Python_Python 2.7 - Fatal编程技术网

Python 类型错误:';str';对象不可调用。即使没有所谓的';str';

Python 类型错误:';str';对象不可调用。即使没有所谓的';str';,python,python-2.7,Python,Python 2.7,在我开始之前,还有许多其他确切的问题,但没有一个答案足以解决我的问题。类/函数log.info('foo')运行一次没有问题,但是第二次调用它时得到错误TypeError:'str'对象不可调用 我发现它和我有同样的问题,但是我没有任何叫做str的东西。我已经用其他函数测试过了,比如war 我的代码: import praw import sys import traceback from accounts import * class logging: def info(self,

在我开始之前,还有许多其他确切的问题,但没有一个答案足以解决我的问题。类/函数
log.info('foo')
运行一次没有问题,但是第二次调用它时得到错误
TypeError:'str'对象不可调用

我发现它和我有同样的问题,但是我没有任何叫做str的东西。我已经用其他函数测试过了,比如war

我的代码:

import praw
import sys
import traceback
from accounts import *

class logging:

    def info(self, log):
        self.info = '\033[94m'
        self.rs = '\033[0m'
        print self.info, 'INFO: ', self.rs

    def warn(self, log):
        self.warn = '\033[93m'
        self.rs = '\033[0m'
        print self.warn, 'WARNING: ', self.log, self.rs

    def critical(self, log):
        self.critical = '\033[91m'
        self.rs = '\033[0m'
        print self.critical, 'CRITICAL: ', log, self.rs

def read_accounts():
    with open('accounts.py') as f:
        for i, l in enumerate(f):
            pass

    i += 1
    accounts = {}

    while i > 0:
        ac = globals()['account_%s' %i]
        index = ac.find(':')
        uname = ac[0:index]
        password = ac[index+1:len(ac)]
        accounts[uname] = password
        i -= 1

    log.info('Usernames loaded successfully! Usernames loaded:')
    print  accounts

def main():
    log.info('Initilizing reddit accounts from file...')
    try:
        read_accounts()
    except:
        traceback.print_exc()
        log.critical('Can not read accounts! Make sure format is correct!')
        sys.exit()


if __name__ == '__main__':
    log = logging()
    main()
我还知道python中有一个日志模块,但我想做我自己的事情


提前谢谢

问题在于您的
日志记录
类将其所有实例方法重新定义为字符串:

class logging:

    def info(self, log):
        self.info = '\033[94m'  # self.info is not a function anymore
        self.rs = '\033[0m'
        print self.info, 'INFO: ', self.rs
因此,第一次调用
log.info
,它将调用
info
函数。第二次,它尝试调用字符串
'\033[94m'

只需在所有方法中为该实例变量使用不同的名称,或者根本不要将其作为实例变量。无论如何,每次调用该方法时,您都要重新定义它:

class logging:

    def info(self, log):
        info_prefix = '\033[94m'  # no conflict
        self.rs = '\033[0m'
        print info_prefix, 'INFO: ', self.rs

问题在于,
日志记录
类将其所有实例方法重新定义为字符串:

class logging:

    def info(self, log):
        self.info = '\033[94m'  # self.info is not a function anymore
        self.rs = '\033[0m'
        print self.info, 'INFO: ', self.rs
因此,第一次调用
log.info
时,它调用
info
函数。第二次,它尝试调用字符串
'\033[94m'

只需在所有方法中为该实例变量使用不同的名称,或者根本不要将其作为实例变量。无论如何,每次调用该方法时,您都要重新定义它:

class logging:

    def info(self, log):
        info_prefix = '\033[94m'  # no conflict
        self.rs = '\033[0m'
        print info_prefix, 'INFO: ', self.rs

帐户
模块中是否有名为
log
的模块级变量?在
帐户
模块中是否有名为
log
的模块级变量?谢谢!这太完美了!谢谢!这太完美了!