python object() takes no parameters error [closed]
I can't believe this is actually a problem, but I've been trying to debug this error and I've gotten nowhere. I'm sure I'm missing something really simple because this seems so silly.
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)
(The two decorators corresponding to addExperience are because this is defined outside of the file where its class is declared.)
The error I'm getting is:
experience = Experience(exp_dict)
TypeError: object() takes no parameters
So this doesn't make any sense to me because I'm clearly declaring a second argument to the init function. Any help would be awesome!
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
Here is Experience.mro() - which says the correct module-wise location of the class Experience:
[<class 'hangify.client.exp.Experience'>, <type 'object'>]
And here is dir(Experience):
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'make_place']
You've mixed tabs and spaces. __init__
is actually defined nested inside another method, so your class doesn't have its own __init__
method, and it inherits object.__init__
instead. Open your code in Notepad instead of whatever editor you're using, and you'll see your code as Python's tab-handling rules see it.
This is why you should never mix tabs and spaces. Stick to one or the other. Spaces are recommended.
I struggled for a while about this. Stupid rule for __init__
. It is two "_" together to be "__"
I too got this error. Incidentally, i typed __int__ instead of __init__.
I think, in many mistype cases the IDE i am using (IntelliJ) would have changed the color to the default set for Function definition. But, in my case __int__ being another dunder/magic method, color remained same as the one which IDE displays for __init__ (default Predefined item definition color), which took me some time in spotting the missing i.
You must press twice on tap and (_) key each time, it must look like:
__init__