【问题标题】:What is the proper term for the methods defined inside of a Python class before the class is instantiated?在实例化类之前在 Python 类中定义的方法的正确术语是什么?
【发布时间】:2011-08-10 18:06:38
【问题描述】:

使用来自http://docs.python.org/tutorial/classes.html#class-objects的这个例子:

class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'

根据那些文档, f 是一个返回函数对象的属性引用。

有没有更简短的方式来说明 f 是什么?我可以称它为类的方法吗(注意我没有说“类方法”是不正确的)?还是在类中定义的函数?还是实例方法?

换句话说,就 f 与 MyClass 的关系而言,f 的正式简写形式是什么?

【问题讨论】:

    标签: python oop class function terminology


    【解决方案1】:
    x = MyClass()
    def __init__(self):
        self.data = []
    print x.i
    print x.f()
    print MyClass.__doc__
    
    # Instance x = MyClass()
    # More __init__(self) is important
    # Sorry my english. I'm from Brazl 
    

    【讨论】:

    • 您不必定义__init__。原问题中的类定义就足够了。
    【解决方案2】:

    我会说它是一个实例方法(或成员函数),因为只有当您将它与实例绑定时才能访问此方法,instance.f()MyClass.f(instance)

    【讨论】:

      【解决方案3】:

      如果您专门指的是MyClass.f 返回的f,那么f 是MyClass 的未绑定方法。或者至少 REPL 是这么称呼它的:

      >>> MyClass.f
      <unbound method MyClass.f>
      

      不过,总的来说,我认为没有人会因为简单地将其称为“方法”而责怪您,简单明了。或者,就其与 MyClass 的关系而言,是 MyClass 的一个方法。

      【讨论】:

      • 或者可能是“MyClass 方法”——无论如何,人们总是说“字符串方法”或“列表方法”。
      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2023-04-03
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多