编辑:最初的问题涉及 PyQt 和 matplotlib,真正的问题太复杂而无法解释,所以我试图简化它,但并没有真正解决。但从回复中我了解到实际问题可能出在我最初认为的其他地方。我想这就是学习编程的意义所在。
谢谢大家!
我正面临一个困扰我的风格问题。我试图尽可能笼统地对他人有所帮助。考虑以下类:
class Values(object):
def __init__(self):
self.first_attr = None
self.second_attr = None
self.third_attr = None
self.fourth_attr = None
def set_first(self, data):
self.first_attr = data
def set_second(self, data):
self.second_attr = data
def set_third(self, data):
self.third_attr = data
def set_fourth(self, data):
self.fourth_attr = data
def add_to_three(self):
attrs = (
self.first_attr,
self.second_attr,
self.third_attr,
)
self._add_one(attrs)
def add_to_two(self):
attrs = (
self.second_attr,
self.fourth_attr,
)
self._add_one(attrs)
def _add_one(self, attrs):
for attr in attrs:
if attr:
attr += 1
我们有一类价值观。该类总共可以有 4 个不同值的属性。每个值都可以用一个 setter 设置(没有使用装饰器来简化事情)。
还有两种方法具有属性元组,其值应该增加。这些值是在运行时间之前确定的。
我们还有一个方法“add_one”,如果设置了这些属性,它会向它接收的那些属性添加一个。否则什么都不应该发生。
现在让我们创建几个实例并设置一些值
first_values = Values()
first_values.set_second = 5
first_values.add_to_three()
second_values = Values()
second_values.set_first = 2
second_values.set_third = 4
second_values.add_to_two()
这很好用,因为“add_one”方法检查是否设置了每个属性。
但是如果我有 50 个属性呢?我不喜欢将它们全部设置为无的想法。另外,我不喜欢在那些 add_to_ 方法中显式编写元组的想法。
如果仅通过更改 Values 类有很多属性,那么处理此问题的最合适方法是什么?