根据参数选择一个子类

发布于 2021-01-29 18:20:06

我有一个模块(db.py),它从不同的数据库类型(sqlite,mysql等)加载数据。该模块包含一个db_loader类和从其继承的子类(sqlite_loader,mysql_loader)。

使用的数据库类型在单独的params文件中,

用户如何找回正确的物体?

即我该怎么做:

loader = db.loader()

我是在db.py模块中使用一种称为loader的方法,还是有一种更优雅的方式使类可以根据参数选择自己的子类?有没有一种标准的方法来做这种事情?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    听起来像您想要的是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):
        ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看