加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 单片继承与基于模块成员的OOP设计

发布时间:2020-12-20 11:12:19 所属栏目:Python 来源:网络整理
导读:我很难做出设计决定 我有一个python类,处理表单数据,这个数据与其他表单数据非常相似,所以我将它重构为它自己的对象,所以它可以被其他类重用. delima是天气使这个formprocessor成为类的成员或类的父类. 如果这个术语错了,请纠正我,这是我之间的撕裂: 基于单
我很难做出设计决定

我有一个python类,处理表单数据,这个数据与其他表单数据非常相似,所以我将它重构为它自己的对象,所以它可以被其他类重用.

delima是天气使这个formprocessor成为类的成员或类的父类.

如果这个术语错了,请纠正我,这是我之间的撕裂:

基于单片继承的类:

class FormProcessor(object):
    def post(self):
        # ... process form data

class PageHandler(RequestHandler,FormProcessor):
    def get(self):
        # show page

或更基于模块化成员的类:

class FormProcessor(object):
    def process(self):
        # ... process form data

class PageHandler(RequestHandler):
    def __init__(self):
        self.processor = FormProcessor()
    def get(self):
        # show page

    def post(self):
        self.processor.process(self.postdata)

我倾向于第二个,但我不确定在可维护性方面可能会产生什么后果.我倾向于它的原因是,我喜欢将处理视为发生的动作,而不是作为PageHandler的主要部分,因此将其作为成员对象而不是父对象是有意义的.

令我困扰的是,当类间实现功能时,它最终会在实例上有很长的函数列表,我正在尝试对它们进行更好的分类,以便程序可以理解并反映它正在建模的系统.

期待有关此问题的任何建议

解决方法

绝对是模块化的方法.采用模块化方法的一些优点是:

>它使您的代码更具可读性,即更清楚PageHandler和FormProcessor的功能
>这使得在两个类上编写unit tests更容易,更有效
>通过使用PageHandler的不同实现,可以更轻松地在以后更改PageHandler的行为

一般来说,坚持认为一个班级做一件事;在维护软件时更容易看到您正在使用的内容,以及使编写更容易(您只需要一次考虑一个上下文).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读