修改一次性使用的基类的一部分的最佳实践是什么?

时间:2017-12-19 17:01:41

标签: python

对于上下文,我正在构建一个从任意页面创建RSS源的框架。它的工作方式是我有一个基础类,有很多设置,并希望插入描述返回项目的生成器;然后我创建了这个类的一个实例。我可以想到两种方法:

1)创建一个派生类,覆盖所有相关的属性和方法,然后创建它的实例:

class Base:

    property = None

    def customizable_function(self, many, different, arguments):
        raise NotImplementedError()

    def __init__(self):
        non_customizable_preparation()
        customizable_function(1, 2, 3)

class Derived:

    property = "useful"

    def customizable_function(self, many, different, arguments):
        do_stuff()

Derived()

2)不要创建第二个类,使init函数采用所有相关参数:

class Base:

    def __init__(self, customizable_function, property):
        non_customizable_preparation()
        customizable_function(1, 2, 3)

def function_that_will_be_passed(self, many, different, arguments):
    do_stuff()

Base(function_that_will_be_passed, property="useful")

第二种方法似乎更清晰,但在其中customizable_function必须在类之外定义,同时使其符号与预期匹配。是否存在一些非显而易见的问题,使其中一种方法明显改善?或者这是一个坏主意,我应该采取不同的做法?

0 个答案:

没有答案