HTML5 audio - воспроизводить звук повторно при нажатии, независимо от того, завершена ли предыдущая итерация

Поиск атрибутов объектов в Python нетривиальен. Но методы экземпляра, конечно, не хранятся в экземпляре объекта!

Поведение по умолчанию для доступа к атрибутам - это получение, установка или удаление атрибута из словаря объекта. Например, a.x имеет цепочку поиска, начиная с a.__dict__['x'], затем type(a).__dict__['x'] и продолжается через базовые классы type(a), исключая метаклассы.

blockquote>

( docs )

Обратите внимание, что есть , чтобы сохранить функцию в экземпляре. Но это не метод экземпляра! Когда интерпретатор ищет атрибут и обнаруживает, что он (a) является функцией и (b) для объекта класса, он автоматически переносит его в объект связанного метода, который передает self.


Есть ли способ посмотреть (и, возможно, изменить) имена и ссылки на методы экземпляра?

blockquote>

Ну, вы можете, конечно, изменить объект класса после его определения. Но я предполагаю, что вы имеете в виду: «Можете ли вы сделать метод x конкретного экземпляра конкретного сделать что-то другое?»

Это Python, ответ «да»: просто определите a.x как некоторую новую функцию. Затем вы получите эту функцию, прежде чем смотреть на класс.

Это может вызвать у вас много путаницы, когда вы пытаетесь понять код!

16
задан AlienWebguy 31 July 2011 в 23:42
поделиться