существует несколько способов передать параметр в обработчиках событий, некоторые следуют.
можно использовать функцию стрелки для переноса параметров передачи и обработчика событий:
<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)} />
Существующие ответы хорошо показывают вам, как получить АТРИБУТЫ объекта, но не дают точного ответа на заданный вами вопрос - как получить МЕТОДЫ объекта. Объекты 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
, чтобы адаптировать результаты к вашим точным и точным потребностям. . dir (object)
даст вам список.
для instance:
a = 2
dir( a )
перечислит все методы, которые вы можете вызывать для целого числа.
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(
Или вы могли бы использовать последовательность клавиш bdwi
, чтобы удалить текущее слово и перейти в режим INSERT.
Другие упоминали 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
Если вам нужны только методы, тогда
def methods(obj):
return [attr for attr in dir(obj) if callable(getattr(obj, attr))]
Но попробуйте IPython, у него есть завершение табуляции для атрибутов объекта, поэтому введите obj.
показывает вам список доступных атрибутов этого объекта.