首页 / PYTHON / Python条件替换多态
Python条件替换多态
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python条件替换多态,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1466字,纯文字阅读大概需要3分钟。
内容图文
我最近阅读了一篇文章/代码片段,其中显示了使用多态替换条件的示例.这是代码:
之前:
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)
后:
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)
Here是我得到它的地方.
现在我的问题是,第二种方法比第一种方法更好吗?据我所知,如果我想使用第二种方法,每次我想记录某些内容时,我都必须做这样的事情:
if log_type == 'file':
log_msg(FileLogger())
elif: log_type == 'database':
log_msg(DbLogger())
我错过了这个或非常明显的观点吗?
解决方法:
关键是你通常只在程序的某个早期点创建了一个记录器对象.那么你只需要执行log_msg(myLogger),它会自动做正确的事情,无论你最初是否决定使用基于文件或基于数据库的日志记录.
换句话说,您的代码看起来像这样
# beginning of file
from logmodule import FileLogger, DBLogger, log_msg
myLogger = FileLogger()
# lots of other code here. . .
# later if you want to log something:
log_msg(myLogger)
稍后,您可以返回并将开头更改为myLogger = DBLogger(),一切仍然有效.我们的想法是在progrma的开头创建记录器,一旦你创建了它,你就不必担心你创建了哪种,你也可以使用它.
请注意,此示例(包括您最初发布的代码)只是一个骨架;它不是你可以直接使用的代码.首先,此代码不提供任何指定日志文件名的方法.我在这里描述的只是你为什么要重构这样的代码的想法.
内容总结
以上是互联网集市为您收集整理的Python条件替换多态全部内容,希望文章能够帮你解决Python条件替换多态所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。