Как получить список методов, доступных в текущем контексте в Python - PullRequest
0 голосов
/ 26 февраля 2020

In Ruby self - текущий контекст:

irb(main):050:0> self
=> main
irb(main):051:0> self.class
=> Object
irb(main):052:0> Object.class
=> Class
irb(main):053:0> Object.ancestors
=> [Object, Kernel, BasicObject]
irb(main):054:0> Object.methods
=> [:new, :allocate, :superclass ... ]
irb(main):055:0> Kernel.methods
=> [:`, :gets, :proc, :lambda, :sprintf ... ]

Поиск метода rand:

irb(main):003:0> (Kernel.methods-Object.methods).grep /rand/
=> [:rand, :srand]
irb(main):004:0> Kernel.methods.count
=> 158
irb(main):006:0> (Kernel.methods-Object.methods).count
=> 60  

Я легко могу определить, где находится каждый метод определены. Здесь rand определено в модуле Kernel.

Согласно вики:

Модуль Kernel включен в объект class, поэтому его методы доступно в каждом Ruby объекте.

Глядя на следующий Python код:

>>> str = 'Hello World'
>>> len(str)
11

откуда берется функция len()? На какой объект он призван? Как получить список методов, доступных в текущем контексте? И какой текущий контекст в Python похож на self в Ruby?

Я новичок в Python, и мне трудно понять, с чего начать.

1 Ответ

3 голосов
/ 26 февраля 2020

Я не уверен насчет текущих методов контекста, но вы можете получить все доступные методы и атрибуты указанных объектов c, используя функцию dir. Например,

from pprint import pprint
my_string = "Hello"
pprint(dir(my_string))
OUT[1]: 
['capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...