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, и мне трудно понять, с чего начать.