首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python代码返回错误“Object is not callable”

Python代码返回错误“Object is not callable”
EN

Stack Overflow用户
提问于 2015-11-02 00:55:12
回答 1查看 637关注 0票数 0

因此,我已经开始尝试加密编码,并一直在尝试创建一个基于时间的唯一加密密钥。这是我到目前为止的代码:

代码语言:javascript
复制
from threading import Timer
from pyclbr import Function
import hashlib, binascii, time

key1=""
buffer1=""
buffer2=""

class RepeatedTimer(object):
    def __init__(self, interval, function, *args, **kwargs):
        self.timer=None
        self.function=function
        self.interval=interval
        self.args=args
        self.kwargs=kwargs
        self.is_running=False
        self.start()

    def _run(self):
        self.is_running=False
        self.start()
        self.function(*self.args,**self.kwargs)

    def start(self):
        if not self.is_running:
            self.timer=Timer(self.interval,self._run)
            self.timer.start()
            self.is_running=True

    def stop(self):
        self.timer.cancel()
        self.is_running=False

def generateKeys():
    global key1
    global buffer1
    global buffer2

    t=int((time.time())/10)
    t=hashlib.sha1(str(t).encode('utf-8'))
    t=t.hexdigest()
    t=t.encode('utf-8')
    t=binascii.hexlify(t)
    t=t.decode('utf-8')
    t=t[0:11]
    t=int(t)>>5
    buffer2=buffer1
    buffer1=key1
    key1=str(t)

def printKeys():
    print("Keys : "+key1+" "+buffer1+" "+buffer2)

timerStart=RepeatedTimer(10,generateKeys())
#generateKeys();
timerStart2=RepeatedTimer(11,printKeys())

每当我运行上面的代码时,我都会得到错误:

代码语言:javascript
复制
Exception in thread Thread-49:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 923, in _bootstrap_inner
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 1189, in run
    self.function(*self.args, **self.kwargs)
  File "/Users/Kiro/Documents/LiClipse Workspace/EncryptionFinal/pkg/enc_keygen.py", line 22, in _run
    self.function(*self.args,**self.kwargs)
TypeError: 'str' object is not callable

Exception in thread Thread-50:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 923, in _bootstrap_inner
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 1189, in run
    self.function(*self.args, **self.kwargs)
  File "/Users/Kiro/Documents/LiClipse Workspace/EncryptionFinal/pkg/enc_keygen.py", line 22, in _run
    self.function(*self.args,**self.kwargs)
TypeError: 'NoneType' object is not callable

有人知道为什么吗?我想要的是generateKeys()函数每10秒运行一次,printKeys()函数每11秒告诉我一次这些键(检查是否正确地将键分配给全局变量)。

这是比任何东西更多的实验,但希望帮助修复这个代码,因为我想让它工作。

EN

回答 1

Stack Overflow用户

发布于 2015-11-02 01:00:31

用你的台词

代码语言:javascript
复制
timerStart=RepeatedTimer(10,generateKeys())

您将把调用generateKeys()的结果传递给__init__方法。你真正想做的,是交出函数本身。那么你就不能把它叫做:

代码语言:javascript
复制
timerStart = RepeatedTimer(10, generateKeys)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33464670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档