198

次のように、複数の関数を呼び出せるようにすることで、クラス コンストラクターを分割します。

class Wizard:
    def __init__(self, argv):
        self.parse_arguments(argv)
        self.wave_wand() # declaration omitted

    def parse_arguments(self, argv):
        if self.has_correct_argument_count(argv):
            self.name = argv[0]
            self.magic_ability = argv[1]
        else:
            raise InvalidArgumentsException() # declaration omitted

# ... irrelevant functions omitted

私のインタープリターは喜んで私のコードを実行しますが、Pylint には次のような不満があります。

Instance attribute attribute_name defined outside __init__

大ざっぱなGoogle検索は現在無益です。すべてのコンストラクター ロジックを保持することは整理されていないように__init__見え、Pylint の警告をオフにすることもハックのようです。

この問題を解決するPythonicの方法は何ですか?

4

6 に答える 6

0

関数を介して設定する属性ごとに、init から関数を呼び出します。たとえば、属性ascii_txtを設定するには、次のように機能します...

def __init__(self, raw_file=None, fingerprint=None):
    self.raw_file = raw_file
    self.ascii_txt = self.convert_resume_to_ascii()

def convert_resume_to_ascii(self):
    ret_val = self.raw_file.upper()
    return ret_val
于 2018-12-30T19:07:33.147 に答える