Вопросы с тегом «magic-methods»

159
Python __call__ специальный метод практический пример

Я знаю, что __call__метод в классе запускается, когда вызывается экземпляр класса. Однако я понятия не имею, когда я смогу использовать этот специальный метод, потому что можно просто создать новый метод и выполнить ту же операцию, что и в __call__методе, и вместо вызова экземпляра вы можете...

99
Почему Python использует «волшебные методы»?

Я недавно играл с Python, и одна вещь, которую я нахожу немного странной, - это широкое использование `` магических методов '', например, чтобы сделать его длину доступной, объект реализует метод def __len__(self), а затем он вызывается, когда ты пишешь len(obj). Мне просто было интересно, почему...

94
Как работает python numpy.where ()?

Я играю numpyи копаюсь в документации, и я наткнулся на некоторую магию. А именно я говорю о numpy.where(): >>> x = np.arange(9.).reshape(3, 3) >>> np.where( x > 5 ) (array([2, 2, 2]), array([0, 1, 2])) Как они внутренне добиваются того, чтобы вы могли передать что-то вроде x...

85
Магические методы PHP __get и __set

Если я не совсем ошибаюсь, __getи __setметоды должны допускать перегрузки → getи set. Например, следующие операторы должны вызывать __getметод: echo $foo->bar; $var = $foo->bar; И следующие __setметоды должны использовать этот метод: $foo->bar = 'test'; Это не работало в моем коде, и его...

83
Делаем определяемый пользователем класс Python сортируемым, хешируемым

Какие методы необходимо переопределить / реализовать при создании сортируемых и / или хешируемых пользовательских классов в Python? Какие подводные камни следует остерегаться? Я ввожу dir({})свой интерпретатор, чтобы получить список методов для встроенных dicts. Из них, я полагаю, мне нужно...

79
Как работает магия метода apply () в Scala?

В Scala, если я определяю метод, вызываемый applyв классе или в объекте верхнего уровня, этот метод будет вызываться всякий раз, когда я добавляю пару круглых скобок к экземпляру этого класса и помещаю соответствующие аргументы apply()между ними. Например: class Foo(x: Int) { def apply(y: Int) = {...