在实例化类之前在 Python 类中定义的方法的正确术语是啥?

Posted

技术标签:

【中文标题】在实例化类之前在 Python 类中定义的方法的正确术语是啥?【英文标题】: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 的正式简写形式是什么?

【问题讨论】:

【参考方案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 方法”——无论如何,人们总是说“字符串方法”或“列表方法”。

以上是关于在实例化类之前在 Python 类中定义的方法的正确术语是啥?的主要内容,如果未能解决你的问题,请参考以下文章

python 基础

Python 基础入门 6_1 类与对象

Java类的定义与类的实例化

如何在 python 的类中使用光线并行性?

在 Python 中实例化类的区别

运算符重载