gpt4 book ai didi

Python 类,如何明智地使用它们,以及单一职责原则

转载 作者:太空狗 更新时间:2023-10-30 00:07:47 25 4
gpt4 key购买 nike

<分区>

我已经使用 Python 编程了一段时间,并且掌握了一些 Python 风格的知识,但仍然对如何正确使用类有疑问。在阅读面向对象的讲座时,我经常发现像单一职责原则这样的规则

"The Single Responsibility Principle says that a class should have one, and only one, reason to change"

读到这里,我可能会想到将一类分成两类,例如:

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()

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

  • 什么时候应该使用类变量或在类函数中传递参数?
  • ComplicatedOperations 类应该是一个类还是一堆函数?
  • 是否应该使用 __init__ 方法来计算最终结果。这是否会使该类难以测试。
  • pythonists 的规则是什么?

在回答后编辑:

所以,阅读 Augusto 理论,我最终会得到这样的结果:

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

def do(self, item):
...

## lots of other functions

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

def complicate_data(item):
return ComplicatedOperations().do(item)

def transform_data_to_options(simple_list):
return default_option() + [self.complicate_data(item)
for item in simple_list]

(还纠正了 default_option 的一个小错误。)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com