Разница между object.method () и методом (объектом) в Python? - PullRequest
0 голосов
/ 14 сентября 2018

У меня очень простой вопрос; если это дубликат, пожалуйста, свяжите меня с ним, так как я не был уверен, что искать!

Мне бы хотелось спросить, в чем разница между object.method() и method(object). Например, когда я определял класс стека, я заметил, что peek(stack) вернул ошибку имени, в то время как stack.peek() работал нормально. Почему это так? Пожалуйста, прости меня, это дубликат, удалит этот вопрос, если так!

1 Ответ

0 голосов
/ 14 сентября 2018

При условии определения этого класса:

# foo.py

class Stack(object):
    def peek(self):
        return 42

Функция peek, объявленная в блоке операторов class, становится атрибутом класса Stack, а не глобальным модулем *Модуль 1007 *, поэтому вы не можете получить к нему доступ напрямую - вам нужно найти его на Stack, то есть:

# foo.py continued

obj = Stack()


try:
    peek(obj)
except NameError:
    print("peek is not a module-level function")

Stack.peek(obj)
# or more simply
obj.peek()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...