Запитання з тегом «magic-methods»

Магічні методи неявно викликаються мовою програмування, коли використовується якась подія або мовна конструкція.


14
Приклад спеціального методу Python __call__
Я знаю, що __call__метод у класі запускається, коли викликається екземпляр класу. Однак я не маю уявлення, коли я можу використовувати цей спеціальний метод, тому що можна просто створити новий метод і виконати ту саму операцію, що робиться в __call__методі, і замість виклику екземпляра, ви можете викликати метод. Я дуже вдячний, …

7
Чому Python використовує "магічні методи"?
Я нещодавно грав з Python, і одне, що мені здається, дивним є широке використання "магічних методів", наприклад, щоб зробити його доступною довжину, об'єкт реалізує метод def __len__(self), а потім його викликають, коли ти пишеш len(obj). Мені було просто цікаво, чому об’єкти не просто визначають len(self)метод, а чи викликають його безпосередньо …

3
Як працює 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 > 5на зразок методу? Я думаю, …

4
Що таке атрибут __dict __.__ dict__ класу Python?
>>> class A(object): pass ... >>> A.__dict__ <dictproxy object at 0x173ef30> >>> A.__dict__.__dict__ Traceback (most recent call last): File "<string>", line 1, in <fragment> AttributeError: 'dictproxy' object has no attribute '__dict__' >>> A.__dict__.copy() {'__dict__': <attribute '__dict__' of 'A' objects> ... } >>> A.__dict__['__dict__'] <attribute '__dict__' of 'A' objects> # What …

2
метод scala slick, якого я поки не можу зрозуміти
Я намагаюся зрозуміти деякі роботи Slick і те, що для цього потрібно. Ось приклад: package models case class Bar(id: Option[Int] = None, name: String) object Bars extends Table[Bar]("bar") { def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column def name = column[String]("name") // Every table needs …

8
PHP __get і __set магічні методи
Якщо я не помиляюся, методи __getand __setповинні передбачати перевантаження → getта set. Наприклад, наступні оператори повинні викликати __getметод: echo $foo->bar; $var = $foo->bar; І наступні повинні використовувати __setметод: $foo->bar = 'test'; Це не працювало в моєму коді, і це відтворюється на цьому простому прикладі: class foo { public $bar; public …

4
Робить визначений користувачем клас визначеного користувачем класу сортувальним, хешируемым
Які методи потрібно замінити / реалізувати, коли користувацькі класи класу можна сортувати та / або хешувати в python? На що слід звертати увагу? Я набираю текст dir({})у своєму інтерпретаторі, щоб отримати список методів вбудованих диктовок. З них, я припускаю, мені потрібно дещо реалізувати деяку підмножину ['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', …

2
Як документувати магічні (_call та _callStatic) методи для IDE
Після багатьох щасливих років кодування в notepad ++ та sublime, мені порадили спробувати PHP IDE. Я випробовую phpStorm, і це здається приємним. Заповнення коду та документація - чудова функція, але вона не працює у мене, коли використовуються магічні методи. Чи існує якась робота, щоб отримати phpStorm, щоб зрозуміти, що відбувається …

3
Як діє магія методу Скала ()?
У Scala, якщо я визначаю метод, що викликається applyу класі або об'єкті верхнього рівня, цей метод буде викликаний кожного разу, коли я додаю пару дужок до екземпляра цього класу і поміщаю відповідні аргументи для apply()між ними. Наприклад: class Foo(x: Int) { def apply(y: Int) = { x*x + y*y } …

10
Чи можна перевантажити призначення Python?
Чи існує магічний метод, який може перевантажити оператор присвоєння, наприклад __assign__(self, new_value)? Я хотів би заборонити повторне прив'язування для екземпляра: class Protect(): def __assign__(self, value): raise Exception("This is an ex-parrot") var = Protect() # once assigned... var = 1 # this should raise Exception() Це можливо? Це божевільно? Чи повинен …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.