Вопросы по теме 'magic-methods'
Где документация Python для специальных методов? (__init__, __new__, __len__, )
Где полный список специальных методов двойного подчеркивания/дандера, которые можно использовать в классах? (например, __init__ , __new__ , __len__ , __add__ )
22740 просмотров
schedule
18.06.2022
используя волшебный метод __set() с 2D-массивами
Если у меня есть следующий класс реестра:
Class registry
{
private $_vars;
public function __construct()
{
$this->_vars = array();
}
public function __set($key, $val)
{
$this->_vars[$key] = $val;...
2690 просмотров
schedule
21.06.2022
Использование __set с массивами решено, но почему?
Проведя небольшое исследование, я в конце концов наткнулся на ответ на вопрос, который я все равно вскоре задал здесь; Как вы работаете с массивами с помощью магических методов __get и __set в PHP? Всякий раз, когда я пытался установить...
1594 просмотров
schedule
27.06.2023
Работа с __get() по ссылке
С примером класса, такого как этот:
class Test{
public function &__get($name){
print_r($name);
}
}
Экземпляр Test отменит вывод как таковой:
$myTest = new Test;
$myTest->foo['bar']['hello'] = 'world';
//outputs...
1945 просмотров
schedule
09.05.2023
По умолчанию поведение геттера по умолчанию, если свойство не выходит
В настоящее время мне нужно расширить класс, чтобы добавить к нему функциональность (у меня нет доступа к базовому классу, чтобы изменить его), и у меня возникла проблема с ним.
По сути, мне нужно, чтобы функция Magic Getter возвращала набор...
328 просмотров
schedule
19.07.2023
Как использовать is_callable с __call?
Я использую PHP 5.3, в котором введены замыкания. Поскольку теперь у меня есть замыкания, доступные во всем моем приложении (и фреймворке), я использую is_callable, чтобы увидеть, что это за обработчик $callback .
Если $callback is_callable ,...
3630 просмотров
schedule
20.04.2022
Как реализовать магический метод __isset() в PHP?
Я пытаюсь заставить такие функции, как empty() и isset() , работать с данными, возвращаемыми методами.
Что у меня есть до сих пор:
abstract class FooBase{
public function __isset($name){
$getter = 'get'.ucfirst($name);...
8329 просмотров
schedule
08.06.2023
Пример магических методов PHP
У меня есть этот вопрос из учебного пособия Zend PHP и я не могу найти правильного объяснения...
<?php
class Magic {
public $a = "A";
protected $b = array("a"=>"A", "b"=>"B", "c"=>"C");
protected $c =...
1482 просмотров
schedule
06.09.2022
Почему __getattribute__ не вызывается при неявном вызове __getitem__?
Пытаясь обернуть произвольные объекты, я столкнулся с проблемой со словарями и списками. Исследуя, мне удалось придумать простой кусок кода, поведение которого я просто не понимаю. Я надеюсь, что некоторые из вас могут сказать мне, что происходит:...
705 просмотров
schedule
29.05.2022
Как определить поля модели с помощью idiorm/granada, не нарушая функциональность ORM?
Форма PHP Granada на основе Idiorm работает следующим образом для извлечения полей из базы данных:
class ORM {
...
public function __get($key) {
return $this->get($key);
}
}
class ORMWrapper extends ORM {
...
public...
549 просмотров
schedule
07.08.2022
Увеличение на __toString
Я не уверен, каким должен быть заголовок, но код должен объяснить это лучше:
class Group {
private $number = 20;
public function __toString() {
return "$this->number";
}
}
$number = new Group();
echo $number, PHP_EOL;
echo...
415 просмотров
schedule
29.10.2022
Как получить доступ к нескольким свойствам с помощью волшебного метода (__get и __set)?
Недавно я изучал магические методы, __get и __set , и мне было интересно, как на самом деле установить и получить несколько свойств в классе.
Я знаю, что он отлично работает только с одной переменной или массивом, но я не уверен в доступе к...
1913 просмотров
schedule
22.07.2023
Метод вызова при установке объявленного публичного свойства
Проблема, с которой я столкнулся, заключается в том, что магический метод __set() по своей конструкции работает только для необъявленных свойств. Есть ли решение, похожее на __set(), для объявленных свойств, где я могу вызвать метод, когда свойство...
38 просмотров
schedule
01.08.2022
Волшебный метод для `self[key] += value`?
Существует магический метод Python __setitem__ для присвоения = типам последовательностей. Существуют ли магические методы для расширенного присвоения += на уровне контейнера? Похоже, что операция изящно разбивается на расширенное присвоение...
1412 просмотров
schedule
21.05.2022
Python __dict__
Атрибут __dict__ должен содержать определенные пользователем атрибуты. Но если мы напечатаем __dict__ пустого класса, я также получу:
__module__
__dict__
__weakref__
__doc__
Которые предварительно заполняются Python в атрибуте __dict__...
3876 просмотров
schedule
24.03.2023
Почему functools.lru_cache не кэширует __call__ при работе с обычными методами
Я пытался сделать конкретный экземпляр functools.lru_cache , как описано в этом ответе , но их решение терпит неудачу при использовании метода __call__ .
class test:
def __init__(self):
self.method = lru_cache()(self.method)...
971 просмотров
schedule
05.05.2023
Список всех методов Python dunder. Какие из них вам нужно реализовать, чтобы правильно проксировать объект?
Я пытаюсь создать объектный прокси. Поиск атрибутов/свойств можно выполнить, просто реализовав методы __getattribute__ , __setattr__ и __delattr__ . Однако другие функции, такие как len(x), x[], bool(x) , требуют реализации других методов...
4549 просмотров
schedule
07.06.2023
Динамически наследовать все магические методы Python от атрибута экземпляра
Во время работы над проектом я столкнулся с интересной ситуацией:
Я создаю класс, который мы можем назвать ValueContainer , который всегда будет хранить одно значение в атрибуте value . ValueContainer , чтобы иметь пользовательские функции,...
738 просмотров
schedule
29.05.2022
Какой метод нарезает строку в Python?
В Python эквивалентом [синтаксического сахара] 'bottle'[1] является 'bottle'.__getitem__(1)
Каков тогда эквивалентный метод 'bottle'[1:3] ?
30 просмотров
schedule
26.07.2022