首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python object()不带参数错误

python object()不带参数错误
EN

Stack Overflow用户
提问于 2014-04-20 07:07:04
回答 2查看 157.4K关注 0票数 61

我不敢相信这真的是一个问题,但我一直在尝试调试这个错误,但一无所获。我确信我错过了一些非常简单的东西,因为这看起来太愚蠢了。

代码语言:javascript
复制
import Experiences, Places, Countries
class Experience(object):

    def make_place(self, place):
        addr = place["address"]
        addr = Places.ttypes.Address(addr["street"], addr["city"], addr["state"], Countries.ttypes._NAMES_TO_VALUES[addr["country"]], addr["zipcode"])
        ll = Geocoder.geocode(addr["street"]+", "+addr["city"]+", "+addr["state"]+" "+addr["zipcode"])
        place["location"] = Places.ttypes.Location(ll[0].coordinates[0], ll[0].coordinates[1])

    def __init__(self, exp_dict):
        exp_dict["datetimeInterval"] = Experiences.ttypes.DateTimeInterval(remove(exp_dict, "startTime"), remove(exp_dict, "endTime"))
        exp_dict["type"] = Experiences.ttypes.ExperienceType.OPEN
        exp_dict["place"] = self.make_place(exp_dict["place"])
        self.obj = Experiences.ttypes.Experience(**exp_dict)

@client.request
@client.catchClientException
def addExperience(thrift, access_token, exp_dict):
    experience = Experience(exp_dict)
    return thrift.client.addExperience(thrift.CLIENT_KEY, access_token, experience.obj)

(与addExperience对应的两个修饰符是因为它是在声明其类的文件外部定义的。)

我得到的错误是:

代码语言:javascript
复制
experience = Experience(exp_dict)
TypeError: object() takes no parameters

所以这对我来说没有任何意义,因为我清楚地声明了init函数的第二个参数。任何帮助都是很棒的!

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/phil/Hangify/hy-frontend-server/env/lib/python2.7/site-    packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/phil/Hangify/hy-frontend-server/hangify/session.py", line 22, in check_login
    return f()
  File "/Users/phil/Hangify/hy-frontend-server/hangify/handlers/create.py", line 31, in Handle
    res = exp.addExperience(hangify.thrift_interface, access_token, experience)
  File "/Users/phil/Hangify/hy-frontend-server/hangify/client/__init__.py", line 22, in decorator
    obj = func(client, *args, **kwargs)
  File "/Users/phil/Hangify/hy-frontend-server/hangify/client/__init__.py", line 30, in decorator
    return func(*args, **kwargs)
  File "/Users/phil/Hangify/hy-frontend-server/hangify/client/exp.py", line 39, in addExperience
    experience = Experience(exp_dict)
TypeError: object() takes no parameters

下面是Experience.mro() -它指出了类体验的正确模块位置:

代码语言:javascript
复制
[<class 'hangify.client.exp.Experience'>, <type 'object'>]

下面是dir(体验):

代码语言:javascript
复制
 ['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
 '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
 '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'make_place']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-20 21:29:57

您混用了制表符和空格。__init__实际上是嵌套在另一个方法中定义的,因此您的类没有自己的__init__方法,而是继承了object.__init__。在记事本中打开代码,而不是使用任何编辑器,您将看到Python的制表符处理规则所看到的代码。

这就是为什么你不应该混和制表符和空格。坚持一个或另一个。建议使用空格。

票数 91
EN

Stack Overflow用户

发布于 2016-03-03 05:46:52

我为此挣扎了一段时间。__init__的愚蠢规则。两个"_“加在一起就是"__”

票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23176597

复制
相关文章

相似问题

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