編集:元の問題には 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 つの属性を持つことができます。各値はセッターで設定できます (物事を単純化するためにデコレーターを使用しませんでした)。
値を増やす必要がある属性のタプルを持つ 2 つのメソッドもあります。これらの値は実行前に決定されます。
また、属性が設定されている場合に受け取る属性に 1 を追加するメソッド「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 個ある場合はどうなるでしょうか。それらをすべてNoneに設定するという考えは好きではありません。また、これらの add_to_ メソッドでタプルを明示的に記述するという考えも好きではありません。
Values クラスのみを変更して属性が多数ある場合、これを処理する最も適切な方法は何でしょうか?