【问题标题】:TypeError: object() takes no parameters when creating an object [closed]TypeError:object()在创建对象时不带参数[关闭]
【发布时间】:2017-07-22 04:15:15
【问题描述】:

首先,我知道这里已经有很多与这个问题相关的答案,但我找不到适合我的问题的答案。当试图创建一个对象时,我基本上只是得到这个错误。如果有任何答案,感谢您的建议。

这是我的代码:

class Human:
    __name = None
    __height = 0

def __init__(self, name, height):
    self.__name = name
    self.__height = height

def set_name(self, name):
    self.__name = name

def get_name(self):
    return self.__name

def set_height(self, height):
    self.__height = height

def get_height(self):
    return self.__height

def get_type(self):
    print('Human')

def toString(self):
    return '{} is {} cm tall.'.format(self.__name,
                                      self.__height)

person = Human('Corey', 180)

【问题讨论】:

  • 这是您的实际格式吗?如果是这样,您需要缩进类下的所有方法。此外,这非常不是您应该如何在 Python 中编写类。不要不要使用getter和setter并且不要不要使用双下划线名称修饰,除非你需要它,我很确定你不需要。
  • 是的,这个错误很可能是因为你的代码没有正确缩进。
  • 哦,谢谢大家。现在一切正常。从现在开始会牢记这一点。再次感谢。 :)

标签: python python-3.x syntax indentation


【解决方案1】:

最常见的原因:__init__() 拼写错误

此错误的常见原因是 __init__() 方法拼写错误,通常是因为忘记了两个前导或尾随下划线之一:

>>> class A:
        def __init_(self, x, y):
            self.x = x
            self.y = y

>>> A(10, 20)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    A(10, 20)
TypeError: object() takes no parameters

不太常见的原因:缩进错误

另一个原因是缩进错误,其中 __init__() 方法没有缩进到类定义中:

>>> class B:
        """Example class"""

>>> def __init__(self, p, q):
        self.p = p
        self.q = q

>>> B(30, 40)
Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    B(30, 40)
TypeError: object() takes no parameters

【讨论】:

  • 事情似乎写得正确。我复制粘贴了代码,并且错误被复制,代码未缩进。将所有内容插入到位解决了所有问题。
  • @idjaw 修改了答案以包括第二个最可能的原因。
【解决方案2】:

你的类声明必须是

class Human(object):

【讨论】:

  • 这不是这段代码的问题。此外,他们使用的是 Python 3,不再需要从 object 继承。
  • 问题有一个 Python-3.x 标签。
猜你喜欢
  • 2020-01-02
  • 2017-10-02
  • 2019-02-05
  • 2021-01-29
  • 2012-06-26
  • 2016-08-25
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
相关资源
最近更新 更多