Почему Python делает методы экземпляра доступными для классов?Python

Программы на Python
Anonymous
Почему Python делает методы экземпляра доступными для классов?

Сообщение Anonymous »

В большинстве языков классам не разрешен доступ к методам экземпляра. В Java, например, попытка получить доступ к такому методу приведет к ошибке компиляции:

ошибка: на нестатический метод [метод экземпляра] нельзя ссылаться из статического контекста

Но Python делает методы экземпляра доступными для классов. Возьмите следующий код:

Код: Выделить всё

class Foo:
def instance_method(self):
print(self)

Foo.instance_method("Custom self value")
Это не выдает ошибку AttributeError, как можно было бы ожидать, исходя из ее аналога в Java. Он выводит «Пользовательское собственное значение», что означает, что экземпляр_метода является членом класса Foo, несмотря на то, что он является методом экземпляра.
Такое поведение кажется неинтуитивным для пользователя. меня, и тот факт, что другие языки прекрасно обходятся без него, заставляет меня задуматься о его необходимости.
Чтобы внести ясность, я понимаю, что происходит за кулисами; этот ответ хорошо объясняет эту функцию. Я просто не понимаю вариантов его использования.
Есть ли конкретная причина, по которой Python делает возможным такой вызов? Или это просто случайная особенность, иногда проявляющаяся в неподходящий момент?

Подробнее здесь: https://stackoverflow.com/questions/787 ... to-classes

Вернуться в «Python»