2016-10-31 106 views
0

在基类构造函数中,我需要知道哪些派生类实例化了。基类是一个连接到mongo的db类,每个派生类表示一个集合对象。我在基类构造函数中创建了mongo连接,在那里我需要知道我将在该特定实例中处理的集合的名称。了解在基类构造函数中实例化哪个派生类

回答

1

更可靠的方法是简单地将参数传递给基础构造函数。这样,你就没有与子类或其名称的耦合。你可以在没有在基类中打破了功能,甚至子类的子类:

class BaseModel: 
    def __init__ (self, collectionName): 
     self.connection = createConnection(collectionName) 

class MyModel (BaseModel): 
    def __init__ (self): 
     super().__init__('MyModel') 

除此之外,为self传递的对象已经是一个合适的实例,所以你可以做任何你想做的事情,要弄清楚它的类型。

相关问题