当前位置: 首页 > 面试题库 >

python object()没有参数错误

商焕
2023-03-14
问题内容

我不敢相信这实际上是一个问题,但是我一直在尝试调试此错误,但是却一无所获。我敢肯定我错过了一些非常简单的事情,因为这看起来太愚蠢了。

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对应的两个装饰器是因为这是在声明其类的文件外部定义的。)

我得到的错误是:

experience = Experience(exp_dict)
TypeError: object() takes no parameters

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

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()-这表示类Experience的正确的模块方式位置:

[<class 'hangify.client.exp.Experience'>, <type 'object'>]

这是dir(Experience):

 ['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
 '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
 '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'make_place']

问题答案:

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

这就是为什么您永远不要混用制表符和空格的原因。坚持一个或另一个。建议使用空格。



 类似资料:
  • 我想启动一项服务,我使用: 启动它: 我的应用崩溃后,logcat返回: java.lang.Class 在 android.app.活动线程.handle上没有零参数构造函数创建服务(活动线程.java:3201) 在 android.app.活动线程.-wrap5(活动线程.java) 在 android.app.活动线程$H.handleMessage(活动线程.java:1586) 在 a

  • 我是新的Android和Java,并试图使基于位置的应用程序。 编辑 我做了一个非常非常简单的测试代码,得到了同样的错误。这是java: 我也犯了同样的错误。以下是我的应用程序级构建中的依赖项。格雷德尔: 原帖 我试图使用ViewModel和LiveData来更新用户位置,因为我知道这是生命周期感知的最佳方式。我有一个默认的地图活动... 一个扩展LiveData以存储用户位置的类。。。 以及一个

  • 马上,我是一个初学者,所以这个问题可能看起来很初级。 每当我使用“extends”并尝试编译时,我都会得到如下错误消息: 我确实知道参数有问题(在本例中是值为“OLAF”的字符串),但我不明白具体是什么问题。此外,我没有得到第二个错误消息。 正如前面所说,我是一个初学者。我发现了几个类似问题的帖子,但无法理解解决方案。很多人都写过一些关于“super()”的东西。我既不知道这段代码应该做什么,也不

  • 我正在尝试使用recyclerview和room库创建一个简单的ToDoList应用程序。在使用room和mvvm架构方面,我正在遵循android开发者代码实验室,我似乎遇到了困难。我已经设置了应用程序的每一层,但在尝试使用ViewModelProvider实例化ViewModel时出现了一个错误。下面是我的ViewModel类中的代码。 } 下面是我试图初始化ViewModel的main片段中

  • 查看std:make_sharedvs std::shared_ptr的前一个堆栈问题,我试图在一个uni项目中实现它。这是之前的“问题”: 我想不出有什么情况