我有一个类(content.MyClass),它存储了很多关于细菌的事实。我多次称呼它来定义许多类型的细菌。它不是非常优雅,但它相当快速,可读和模块化(容易添加更多细菌)。
问题:我有更好的方法吗?
import content
def myMethod():
bacteria = {} #A dictionary I fill with 'Bacteria Name':object
bacteria['Staph Aureus'] = content.MyClass(
bug_type = ['gram+'],
virulence = ['Protein A', 'TSST-1', 'exfoiative toxin', 'enterotoxin'],
labs = ['catalase+', 'coagulase+']
)
bacteria['Staph Epidermidis'] = content.MyClass(
bug_type = ['gram+'],
sx = ['infects prosthetic devices']
)
#Etc. about 25 more times.
return bacteria
(脚注:我知道PEP 8说我应该缩进所有内容以与“MyClass(”)对齐,但由于某些列表非常长,因此在这里不起作用。此外,每个列表中都有很多变量class;我在这里修剪它们的例子。)
答案 0 :(得分:2)
问题:我有更好的方法吗?
您正在考虑solving the wrong problem.
让您的班级data-driven:将代码与数据分开。从数据源加载定义;像JSON或YAML文件这样简单的东西可以正常工作。
在进行数据驱动编程时,可以清楚地区分代码与其作用的数据结构,并设计两者,以便通过编辑而不是代码来改变程序的逻辑但数据结构。
答案 1 :(得分:1)
我会这样做:
def myMethod():
from content import MyClass
return {
'Staph Aureus': MyClass(
bug_type = ['gram+'],
virulence = ['Protein A', 'TSST-1', 'exfoiative toxin', 'enterotoxin'],
labs = ['catalase+', 'coagulase+']
),
'Staph Epidermidis': MyClass(
bug_type = ['gram+'],
sx = ['infects prosthetic devices']
),
#Etc. about 25 more times.
}