小编use*_*074的帖子

Python类,如何使用它们的风格,以及单一责任原则

我已经用Python编程了一段时间,并且已经介绍了Python风格的一些知识,但是仍然存在如何正确使用类的问题.在阅读面向对象的讲座时,我经常会发现像单一责任原则这样的规则

"单一责任原则说一个班级应该有一个,而且只有一个,有理由改变"

读到这篇文章,我可能会想到将一个类分成两个,比如:

class ComplicatedOperations(object):
    def __init__(self, item):
        pass

    def do(self):
        ...

    ## lots of other functions

class CreateOption(object):
    def __init__(self, simple_list):
        self.simple_list = simple_list

    def to_options(self):
        operated_data = self.transform_data(self.simple_list)
        return self.default_option() + operated_data

    def default_option(self):
        return [('', '')]

    def transform_data(self, simple_list):
        return [self.make_complicated_operations_that_requires_losts_of_manipulation(item)
                        for item in simple_list]

    def make_complicated_operations_that_requires_losts_of_manipulation(self, item):
            return ComplicatedOperations(item).do()
Run Code Online (Sandbox Code Playgroud)

对我来说,这提出了许多不同的问题; 喜欢:

  • 我什么时候应该使用类变量或在类函数中传递参数?
  • 如若ComplicatedOperations类是类或只是一堆的功能是什么?
  • __init__方法应该用于计算最终结果.这是否会使该类难以测试.
  • 蟒蛇的规则是什么?

回答后编辑:

所以,阅读奥古斯托理论,我最终会得到这样的结论:

class ComplicatedOperations(object):
    def __init__(self):
        pass

    def do(self, item):
        ...

    ## lots of other functions

def …
Run Code Online (Sandbox Code Playgroud)

python oop class single-responsibility-principle

6
推荐指数
1
解决办法
1034
查看次数