小编Jac*_*ack的帖子

Python条件替换多态

我最近阅读了一篇文章/代码片段,其中显示了使用多态替换条件的示例.这是代码:

之前:

def log_msg(log_type):
    msg = 'Operation successful'
    if  log_type == 'file':
        log_file.write(msg)
    elif log_type == 'database':
        cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)
Run Code Online (Sandbox Code Playgroud)

后:

class FileLogger(object):
    def log(self, msg):
        log_file.write(msg)

class DbLogger(object):
    def log(self, msg):
        cursor.execute('INSERT INTO log_table (MSG) VALUES ('?')', msg)

def log_msg(obj):
    msg = 'Operation successful'
    obj.log(msg)
Run Code Online (Sandbox Code Playgroud)

是我从中得到它的地方.

现在我的问题是,第二种方法比第一种方法更好吗?据我所知,如果我想使用第二种方法,每次我想记录某些内容时,我都必须做这样的事情:

if log_type == 'file':
    log_msg(FileLogger())
elif: log_type == 'database':
    log_msg(DbLogger())
Run Code Online (Sandbox Code Playgroud)

我错过了这个或非常明显的观点吗?

python oop polymorphism conditional-statements

4
推荐指数
2
解决办法
1050
查看次数