我有一个名为 Variant 的课程。目前这个类有大约 10 个属性,例如:姓名、位置、基因、影响、父亲、母亲、孩子、疾病、参考和替代。
我不认为这些意味着什么真的很重要,但是现在我用这个类建模的变体带有很多额外的信息,多达 30 个不同的属性,似乎要在我的构造函数中特别提到每一个除了容易出错之外,它不会很“pythonic”。
变体以表格的形式出现,其中属性作为列名。有没有办法动态定义表中的各种属性?
您可以创建一个小型工厂函数来创建Variant
对象、读取表、设置表中的所有属性(使用内置的setattr
)并返回对象。
像这样的东西(假设您在带有键和关联值的类似字典的对象中拥有行信息):
def variant_from_table(row):
variant = Variant()
for key, value in row:
setattr(variant, key, value)
return variant