【问题标题】: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()
    

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 2014-09-14
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2010-09-24
      • 2023-03-11
      相关资源
      最近更新 更多