实例化python类但是没有定义任何__init __()方法时会发生什么?

时间:2015-03-30 21:37:25

标签: python constructor

给出以下类声明:

class FactorizationModel(ModelWrapper, Saveable, Loader):

其中 ModelWrapper 可保存 Loader FactorizationModel 的其他基类

此类没有定义任何__init__方法。相反,它有一些def,包括

def predict(self, user, product):

def predictAll(self, user_product):

def userFeatures(self):

def productFeatures(self):

鉴于没有 init 方法:请解释下面的构造函数调用中发生的情况。

从导入此类的一些客户端代码:

    return FactorizationModel(model)

更新确定此处的第一个答案是正确的。添加相关信息以明确说明:

class ModelWrapper(object):
    # the following base class constructor is getting called implicitly..
    def __init__(self, model):
          ...

2 个答案:

答案 0 :(得分:0)

初始化程序继承自父类,问题已解决。它在多重继承中搞砸了,如果存在冲突,它将只使用第一个传递的超类。例如:

class C(A, B): # initializer from A will be used
class C(B, A): # initializer from B will be used

答案 1 :(得分:0)

Python中的所有类都继承自一个名为Object的基类,它将该类分配到内存中(现在它被称为Object;类的一个实例。)因此那些没有初始化程序的类调用了基类初始值设定项