根据参数选择一个子类
我有一个模块(db.py),它从不同的数据库类型(sqlite,mysql等)加载数据。该模块包含一个db_loader类和从其继承的子类(sqlite_loader,mysql_loader)。
使用的数据库类型在单独的params文件中,
用户如何找回正确的物体?
即我该怎么做:
loader = db.loader()
我是在db.py模块中使用一种称为loader的方法,还是有一种更优雅的方式使类可以根据参数选择自己的子类?有没有一种标准的方法来做这种事情?
-
听起来像您想要的是Factory
Pattern。您将参数传递给一个工厂方法(在您的模块中,或者在它可能产生的所有对象的公共父类中),它将返回正确类的实例。在python中,由于类型是动态的,所以这个问题比Wikipedia文章上的某些细节要简单一些。class Animal(object): @staticmethod def get_animal_which_makes_noise(noise): if noise == 'meow': return Cat() elif noise == 'woof': return Dog() class Cat(Animal): ... class Dog(Animal): ...