ViewEventListener
ではなく、EventListener
をサブクラス化しているように見えます。
このエラーが表示される理由は、クラスの__init__
メソッドが引数をとりません(例外は、クラスメソッドに常に存在するself
を除く)。 Sublimeがインスタンスを作成するときにview
には渡されず、__init__
には1つが必要なため、位置パラメータが欠落しているというエラーが発生します。クラスは、リスナーが作成されたときに1が必要とされていないので、一つの特定のview
に関連付けるとしないので、EventListener
すべてのイベントが、彼らは(もしあれば)に適用されることをview
に渡すため
です。
ViewEventListener
は、EventListener
のイベントのサブセットのみを提供しますが、そのインスタンスは特定のビューに適用されるため、そのコンストラクタには適用されるビューが提供されます。この場合、イベント自体には、view
という引数がありません。リスナーは、それが関連付けられているものを既に知っているからです。
次のようになり、アカウントにこのすべてを取り、あなたのコードの修正版:ここ
import sublime_plugin
class TestMe(sublime_plugin.ViewEventListener):
def __init__(self, view):
super().__init__(view)
self.need_update = False
def setme(self):
self.need_update = True
def on_activated(self):
self.setme()
if self.need_update == True:
print("it works")
スーパークラスがViewEventListener
あり、それが作成されたときサブライムがview
を通過しますいます。これは、self.view
を渡されたビューに設定するのではなく、__init__
メソッドのスーパークラスバージョンを呼び出します。これにより、デフォルトのクラスが行う必要のある他の設定(この場合は何もしませんが、残念ながら安全です)が実行できます。
この場合には、すべてのビューはそれのために作成された、このクラスの一意のインスタンスを持つことになりますので、さらに方法は、少し調整されている:それはそれが何であるか、インスタンスを知っているように、
setme
はself
引数を取りますそれはself.view
へのアクセス権を持っているので
on_activated
のために呼び出されていることview
引数を取りませんPythonは知っているように、それはそれを必要とする場合setme
から
- コールは
self.
接頭辞する必要があります
need_update
のすべてのアクセスには接頭辞self.
が付くため、各メソッドはそれぞれのインスタンスに固有の変数のバージョンにアクセスします。