gpt4 book ai didi

python - 我应该传递对象还是在构造函数中构建它?

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:23 24 4
gpt4 key购买 nike

也许这并不重要,但我有一种预感我应该“传递对象”,但我不确定为什么。

情况

我有一些通过读取文本文件(例如 CSV 文件)创建的 Record 对象。其中一个字段定义了对此记录执行的可能操作。

例如:

class Action:
def __init__(self, create, update, delete):
self.create = create
self.update = update
self.delete = delete

@staticmethod
def parse_from_string(actions):
return Action('c' in actions, 'u' in actions, 'd' in actions)

这两个设计哪个更好?

class Record1:
def __init__(self, actions_string, name, ...etc):
self.action = Actions.parse_from_string(actions_string)
...

class Record2:
def __init__(self, actions, name, ...etc):
self.action = actions

它们的用途区别在于:

action_string, name_string,... = read_details_from_file()

record1 = Record1(action_string, name_string, ...)

# vs.
actions_obj = Actions.parse_from_string(actions_string)
record2 = Record2(actions_obj, name_string, ... )

我想我倾向于第二种模型,但我不知道为什么?另外,我是否应该强制传递给 Record2 构造函数的对象具有正确的类型?

最佳答案

你的蜘蛛侠意识将你引向第二种设计是有充分理由的:它更好 separates concerns 。减少依赖性可以提高可组合性、可重用性和可测试性。

关于python - 我应该传递对象还是在构造函数中构建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33878647/

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