Почему в моем коде Python есть ошибка TypeError? - PullRequest
1 голос
/ 30 декабря 2010
from celery.task import Task
class Decayer(Task):

    def calc_decay_value(self, x):
        y = (1.0/(2^x))
        return y

    def calc_decay_time(self, x):
        y  = 2^x
        return y

    def run(self, d, **kwargs):

        #do stuff.

        return 0


>>> decayer = tasks.Decayer(r)



Traceback (most recent call last):
  File "scanDecay.py", line 31, in <module>
    decayer = tasks.Decayer(r)
TypeError: object.__new__() takes no parameters

Ответы [ 2 ]

7 голосов
/ 30 декабря 2010

Две ошибки

1) В вашем классе нет функции __init__.Либо добавьте его, либо используйте вместо этого:

decayer = tasks.Decayer()

2) Вы пытаетесь поднять целое число до значения числа с плавающей запятой, но ^ означает xor и не может использоваться на поплавкахИспользуйте ** вместо ^:

y = 2 ** x
2 голосов
/ 30 декабря 2010

Проблема возникает из-за вызова и задач decayer = tasks.Decayer(r). Decayer не предназначен для получения аргумента, потому что Task не определяет метод __init__, который может его принять.

...