我通過讓它調用多個功能,這樣分手了我的類的構造函數:實例屬性屬性名稱之外定義__init__
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警告也似乎是hack-ish。
什麼是/ Pythonic方式來解決這個問題?
警告只是說它說什麼。如果你在構造函數外初始化實例變量,我認爲它違反了[POLS](http://en.wikipedia.org/wiki/Principle_of_least_astonishment)。嘗試內聯'parse_arguments'或使用'__init__'中函數的返回值初始化變量,我猜,pylint會很開心。 – miku