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

__init__中的“此构造函数不带参数”错误

戚峻
2023-03-14
问题内容

运行以下代码时出现错误:

class Person:
  def _init_(self, name):
    self.name = name

  def hello(self):
    print 'Initialising the object with its name ', self.name

p = Person('Constructor')
p.hello()

输出为:

Traceback (most recent call last):  
  File "./class_init.py", line 11, in <module>  
    p = Person('Harry')  
TypeError: this constructor takes no arguments

有什么问题?


问题答案:

该方法应命名__init__为构造函数,而不是_init_。(请注意双下划线。)

如果使用单个下划线,则只需创建一个名为的方法_init_,然后获取一个不带参数的默认构造函数。



 类似资料:
  • 我有以下代码: 我不希望字段ui有一个getter,但是kotlin在默认情况下会生成它,因为它是构造函数中定义的val。 在properties and fields文档中,我发现我可以用以下代码生成一个私有getter 但我在构造函数定义中找不到这样做的方法

  • 问题内容: 为什么构造函数确实称为“构造函数”?它们的目的是什么?它们与类中的方法有何不同? 另外,一个班级中可以有更多人吗?我尝试了以下方法,有人可以解释一下结果吗? 最后,是运算符重载器吗? 问题答案: Python中没有函数重载,这意味着您不能拥有名称相同但参数不同的多个函数。 在您的代码示例中,您没有 过载 。发生的是第二个定义将名称重新 绑定到新方法,导致第一个方法不可访问。 至于关于构

  • 我使用的是jdk8,需要创建一个以类名作为构造函数参数的Spring组件。但是,使用我当前的代码,我遇到了运行时错误: 这是我的博客类: 这就是我尝试创建类的方式: 我可以了解一下创建该组件的正确方法/这里出了什么问题吗?提前感谢。

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

  • 我不明白为什么一个实体没有参数的构造函数被调用时,提供一个请求体?如果我删除它和唯一存在的构造函数是一个接收参数,我得到预期的输出打印,但我必须实现一个没有参数的构造函数,以保存在数据库中的实体。 以下是路径:注释空构造函数时,新实例的值与请求json体匹配 这是实体类:

  • 对于我的Java应用程序,我尝试使用ScalaCheck编写一些基于属性的单元测试。为此,我需要生成器,但我能找到的所有教程都使用带有参数的构造函数来生成对象。我需要生成的对象没有构造函数参数,我无法添加这样的构造函数,因为它来自外部库。 我现在有以下内容(Jwt声明来自软件包组织.jose4j.jwt): 关于如何编写我的生成器,有什么建议吗?我对Scala一无所知,所以如果我犯了一个“明显”的