Запятая VIM отсутствует в режиме вставки

staticmethod является методом, который ничего не знает о классе или экземпляре, к этому обратились. Это просто получает аргументы, которые были переданы, никакой неявный первый аргумент. Это в основном бесполезно в Python - можно просто использовать функцию модуля вместо staticmethod.

А classmethod, с другой стороны, является методом, который передается класс, к этому обратились, или класс экземпляра, к этому обратились как первый аргумент. Это полезно, когда Вы хотите, чтобы метод был фабрикой для класса: так как это получает фактический класс, к этому обратились как первый аргумент, можно всегда инстанцировать правильного класса, даже когда подклассы включены. Наблюдайте, например, как dict.fromkeys(), classmethod, возвращает экземпляр подкласса, когда обращено подкласс:

>>> class DictSubclass(dict):
...     def __repr__(self):
...         return "DictSubclass"
... 
>>> dict.fromkeys("abc")
{'a': None, 'c': None, 'b': None}
>>> DictSubclass.fromkeys("abc")
DictSubclass
>>> 
5
задан Tamás Szelei 6 August 2009 в 23:43
поделиться

2 ответа

Хорошо, мне удалось это решить. Раньше я использовал mkvimrc для создания моего .vimrc. Я удалил все это и создал вручную. Не уверен, что вызвало это, но теперь все работает, как ожидалось. Мораль: не ленитесь, напишите свой vimrc самостоятельно. :)

2
ответ дан 18 December 2019 в 10:47
поделиться

Что произойдет, если вы введете CTRL-V с запятой в режиме вставки? Вы видите запятую?

Кроме того, поскольку эта проблема возникает только в gvim, а не в vim, попробуйте запустить xev и ввести его, чтобы увидеть, выглядят ли события странными. (вам может потребоваться apt-get install x11-utils для xev) События, которые я получаю, выглядят следующим образом:

KeyPress event, serial 30, synthetic NO, window 0x4000001,
    root 0x236, subw 0x0, time 788140933, (138,120), root:(144,139),
    state 0x10, keycode 59 (keysym 0x2c, comma), same_screen YES,
    XLookupString gives 1 bytes: (2c) ","
    XmbLookupString gives 1 bytes: (2c) ","
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x4000001,
    root 0x236, subw 0x0, time 788141013, (138,120), root:(144,139),
    state 0x10, keycode 59 (keysym 0x2c, comma), same_screen YES,
    XLookupString gives 1 bytes: (2c) ","
    XFilterEvent returns: False
2
ответ дан 18 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: