在实例化类之前在 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 类中定义的方法的正确术语是啥?的主要内容,如果未能解决你的问题,请参考以下文章