Pep8は、常にcls
クラス メソッド定義の最初の引数として使用することをお勧めします。cls.cartridge_state
ここで、インスタンス メソッド (この場合: ) でも使用できるクラス変数 (この場合: ) を使用したいとします__init__
。そのためには、変数をグローバルにする必要があります (以下のコードを参照)。ただし、インスタンス化FountainPen
すると、次のランタイム エラーが発生します。
self.cartridge_state = cls.cartridge_state
NameError: global name 'cls' is not defined
しかし、もう一度変更global cartridge_state
するglobal cls.cartridge_state
と、モジュールをインポートしようとすると、syntaxError が発生します。
class FountainPen(object):
cartridge_ink = "water-based"
@classmethod
def toggle_default_cartridge_state(cls):
i = 0
cartridge_states = ['non-empty','empty']
global cartridge_state
cls.cartridge_state = cartridge_states[i]
i += 1
def __init__(self):
self.cartridge_state = cls.cartridge_state
global number_of_refills
self.number_of_refills = 0
def write(self):
print Pen.write(self)
self.cartridge_state = "empty"
return self.cartridge_state
def refill(self):
self.cartridge_state = "non-empty"
self.number_of_refills += 1
クラス変数cartridge_state
を pep8 に準拠させ、このコードをエラーなしで動作させるにはどうすればよいですか?