список методов для оболочки Python?

существует несколько способов передать параметр в обработчиках событий, некоторые следуют.

можно использовать функцию стрелки для переноса параметров передачи и обработчика событий:

<button onClick={() => this.handleClick(id)} />

выше примера эквивалентно вызову .bind, или можно явно звонить, связывают.

<button onClick={this.handleClick.bind(this, id)} />

Кроме этих двух подходов, можно также передать аргументы функции, которая определяется как функция карри.

handleClick = (id) => () => {
    console.log("Hello, your ticket number is", id)
};

<button onClick={this.handleClick(id)} />
12
задан potlee 4 September 2009 в 12:31
поделиться

8 ответов

Существующие ответы хорошо показывают вам, как получить АТРИБУТЫ объекта, но не дают точного ответа на заданный вами вопрос - как получить МЕТОДЫ объекта. Объекты Python имеют единое пространство имен (в отличие от Ruby, где методы и атрибуты используют разные пространства имен). Рассмотрим, например:

>>> class X(object):
...   @classmethod
...   def clame(cls): pass
...   @staticmethod
...   def stame(): pass
...   def meth(self): pass
...   def __init__(self):
...     self.lam = lambda: None
...     self.val = 23
... 
>>> x = X()
>>> dir(x)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
 '__getattribute__', '__hash__', '__init__', '__module__',
 '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
 'clame', 'lam', 'meth', 'stame', 'val']

((разделение вывода для удобства чтения)).

Как видите, это дает вам имена всех атрибутов, включая множество специальных методов, которые только что унаследованы от объекта ], специальные атрибуты данных, такие как __ class __ , __ dict __ и __ doc __ , атрибуты данных для каждого экземпляра ( val ), исполняемый файл для каждого экземпляра атрибуты ( lam ), а также фактические методы.

Если и когда вам нужно быть более избирательным, попробуйте:

>>> import inspect
>>> [n for n, v in inspect.getmembers(x, inspect.ismethod)]
['__init__', 'clame', 'meth']

Стандартный библиотечный модуль inspect - лучший способ провести самоанализ в Python: он строится поверх встроенных хуков интроспекции (таких как dir и более продвинутых), чтобы предложить вам полезные, богатые и простые услуги самоанализа. Здесь, например, вы видите, что показаны только методы экземпляра и класса, специально разработанные этим классом - не статические методы, не атрибуты экземпляра, вызываемые или нет, не специальные методы, унаследованные от объекта . Если ваши потребности в селективности немного отличаются, легко создать собственную модифицированную версию ismethod и передать ее в качестве второго аргумента getmembers , чтобы адаптировать результаты к вашим точным и точным потребностям. .

он построен на основе встроенных хуков интроспекции (таких как dir и более продвинутых), чтобы предложить вам полезные, богатые и простые услуги интроспекции. Здесь, например, вы видите, что показаны только методы экземпляра и класса, специально разработанные этим классом - не статические методы, не атрибуты экземпляра, вызываемые или нет, не специальные методы, унаследованные от объекта . Если ваши потребности в селективности немного отличаются, легко создать собственную модифицированную версию ismethod и передать ее в качестве второго аргумента getmembers , чтобы адаптировать результаты к вашим точным и точным потребностям. .

он построен на основе встроенных хуков интроспекции (таких как dir и более продвинутых), чтобы предложить вам полезные, богатые и простые услуги интроспекции. Здесь, например, вы видите, что показаны только методы экземпляра и класса, специально разработанные этим классом - не статические методы, не атрибуты экземпляра, вызываемые или нет, не специальные методы, унаследованные от объекта . Если ваши потребности в селективности немного отличаются, легко создать собственную измененную версию ismethod и передать ее в качестве второго аргумента getmembers , чтобы адаптировать результаты к вашим точным и точным потребностям. .

вы видите, что показаны только методы экземпляра и класса, специально разработанные этим классом - не статические методы, не атрибуты экземпляра, вызываемые или нет, не специальные методы, унаследованные от объекта . Если ваши потребности в селективности немного отличаются, легко создать собственную измененную версию ismethod и передать ее в качестве второго аргумента getmembers , чтобы адаптировать результаты к вашим точным и точным потребностям. .

вы видите, что показаны только методы экземпляра и класса, специально разработанные этим классом - не статические методы, не атрибуты экземпляра, вызываемые или нет, не специальные методы, унаследованные от объекта . Если ваши потребности в селективности немного отличаются, легко создать собственную модифицированную версию ismethod и передать ее в качестве второго аргумента getmembers , чтобы адаптировать результаты к вашим точным и точным потребностям. .

20
ответ дан 2 December 2019 в 03:07
поделиться

dir (object)

даст вам список.

для instance:

a = 2
dir( a )

перечислит все методы, которые вы можете вызывать для целого числа.

10
ответ дан 2 December 2019 в 03:07
поделиться
>>> help(my_object)
5
ответ дан 2 December 2019 в 03:07
поделиться

Python также поддерживает завершение табуляции. Я предпочитаю чистую подсказку python (поэтому нет, спасибо IPython), но с завершением табуляции.

Настройка в .bashrc или аналогичном:

PYTHONSTARTUP=$HOME/.pythonrc

Поместите это в .pythonrc:

try:
    import readline
except ImportError:
    print ("Module readline not available.")
else:
    print ("Enabling tab completion")
    import rlcompleter
    readline.parse_and_bind("tab: complete")

Он будет печатать «Включение завершения вкладки» каждый когда запускается приглашение python, потому что лучше быть явным. Это не повлияет на выполнение скриптов и программ Python.


Пример:

>>> lst = []
>>> lst.
lst.__add__(           lst.__iadd__(          lst.__setattr__(
lst.__class__(         lst.__imul__(          lst.__setitem__(
lst.__contains__(      lst.__init__(          lst.__setslice__(
lst.__delattr__(       lst.__iter__(          lst.__sizeof__(
lst.__delitem__(       lst.__le__(            lst.__str__(
lst.__delslice__(      lst.__len__(           lst.__subclasshook__(
lst.__doc__            lst.__lt__(            lst.append(
lst.__eq__(            lst.__mul__(           lst.count(
lst.__format__(        lst.__ne__(            lst.extend(
lst.__ge__(            lst.__new__(           lst.index(
lst.__getattribute__(  lst.__reduce__(        lst.insert(
lst.__getitem__(       lst.__reduce_ex__(     lst.pop(
lst.__getslice__(      lst.__repr__(          lst.remove(
lst.__gt__(            lst.__reversed__(      lst.reverse(
lst.__hash__           lst.__rmul__(          lst.sort(
4
ответ дан 2 December 2019 в 03:07
поделиться

Или вы могли бы использовать последовательность клавиш bdwi , чтобы удалить текущее слово и перейти в режим INSERT.

com / inky / see / tree / master (источник)
3
ответ дан 2 December 2019 в 03:07
поделиться

Сделайте это:

dir(obj)
2
ответ дан 2 December 2019 в 03:07
поделиться

Другие упоминали dir . Позвольте мне сделать замечание с осторожностью: для объектов Python может быть определен метод __ getattr __ , который вызывается при попытке вызвать неопределенный метод для указанного объекта. Очевидно, dir не перечисляет все эти (бесконечно много) имен методов. Некоторые библиотеки явно используют эту функцию, например PLY (Python Lex-Yacc).

Пример:

>>> class Test:
...     def __getattr__(self, name):
...         return 'foo <%s>' % name
...
>>> t = Test()
>>> t.bar
'foo <bar>'
>>> 'bar' in dir(t)
False
2
ответ дан 2 December 2019 в 03:07
поделиться

Если вам нужны только методы, тогда

def methods(obj):
    return [attr for attr in dir(obj) if callable(getattr(obj, attr))]

Но попробуйте IPython, у него есть завершение табуляции для атрибутов объекта, поэтому введите obj. показывает вам список доступных атрибутов этого объекта.

0
ответ дан 2 December 2019 в 03:07
поделиться
Другие вопросы по тегам:

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