你总是必须使用__init__作为构造函数吗?

时间:2015-01-27 19:10:53

标签: python python-3.x

  1. 您是否始终必须使用__init__作为构造函数?
  2. 您可以在一个类中使用多少个构造函数?
  3. 你需要拥有自我'作为第一个参数,或者您可以使用任何其他名称,例如' shapes'而不是' self'?

2 个答案:

答案 0 :(得分:1)

  1. 构造函数是可选的。但是,如果指定一个,则必须将其命名为__init__;它不能被命名为其他任何东西(否则,Python将如何知道哪个函数是构造函数?)。
  2. 一个,名为__init__(虽然它可以调用其他功能)。
  3. 不,但使用self以外的名称会使您的代码更难以被其他人阅读,他们希望按惯例使用名称self

答案 1 :(得分:1)

初始化实例的唯一构造函数是__init__。如果你想要多态,你只需要灵活地解析和解释__init__的输入参数。你使用它吗?不,你可以省略它,在这种情况下,Python调用超类的__init__方法,如果有的话。

还有一个名为__new__的方法,在__init__之前调用,但它的目的不同,行为也不相同:请参阅https://stackoverflow.com/a/674369/3019689

不,self可以重命名,但结果将是不易读,维护较少的代码,因为self是完善的常规名称。