【问题标题】:Difference between object.method() and method(object) in Python?Python 中 object.method() 和 method(object) 的区别?
【发布时间】:2018-09-14 09:29:36
【问题描述】:
我有一个非常基本的问题;如果这是重复的,请给我链接,因为我不确定要搜索什么!
我想问一下object.method() 和method(object) 之间的区别是什么。例如,当我定义一个堆栈类时,我注意到peek(stack) 返回名称错误,而stack.peek() 工作正常。为什么会这样?请原谅我这是重复的,如果是,将删除此问题!
【问题讨论】:
标签:
python
python-3.x
object
methods
【解决方案1】:
假设这个类定义:
# foo.py
class Stack(object):
def peek(self):
return 42
peek 函数在class 语句块中声明,成为Stack 类的属性,而不是foo 模块的全局模块,因此您无法直接访问它 - 您需要查看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()