有人能简单解释OOP环境中的方法与函数吗?
当前回答
方法和函数之间有什么区别?
Python的官方文档是这样定义的(感谢@Kelly Bundy!):
作用向调用者返回某个值的一系列语句。它还可以传递零个或多个参数,这些参数可以在主体的执行中使用。另请参阅参数、方法和函数定义部分
方法在类主体内定义的函数。如果作为该类实例的属性调用,该方法将获取实例对象作为其第一个参数(通常称为self)。请参见函数和嵌套范围。
正方形是矩形,但并非所有矩形都是正方形。我解释世界的方式是,一个方法是一个函数,但并不是所有的函数都是方法。方法之所以独特,是因为它是一种特殊类型的函数,它也与类关联,并且可以访问类成员变量。
另请参见:
hasattr被称为方法,但它看起来像函数
其他回答
“method”是“function”的面向对象词。这几乎就是它的全部(即,没有真正的区别)。
不幸的是,我认为这里的很多答案都在延续或推进一种观点,即存在一些复杂而有意义的差异。
真的-没有那么多,只是对同一件事用不同的词。
[后期添加]
事实上,正如BrianNeal在对这个问题的评论中指出的那样,C++标准在引用成员函数时从不使用“方法”一词。有些人可能认为这表明C++并不是真正的面向对象语言;然而,我更倾向于将其作为一种迹象,即一群相当聪明的人并不认为有特别强烈的理由使用不同的术语。
让我们不要过于复杂化,这应该是一个非常简单的答案。方法和功能是一样的。当函数在类外部时,可以将其称为函数,当函数在一个类内部编写时,可以称其为方法。
IMHO的人只是想发明一个新词,当他们想引用对象内部的函数时,可以更方便地在程序员之间进行交流。
如果你说的是方法,你指的是类内的函数。如果你说的是函数,那么你的意思只是类之外的函数。
事实上,这两个词都用来描述函数。即使你用错了,也不会发生任何错误。这两个词都很好地描述了您希望在代码中实现的目标。
函数是一个代码,它必须扮演一个做某事的角色(一个函数)。方法是解决问题的方法。
它也做同样的事情。这是同样的事情。如果你想超精确并遵循惯例,你可以调用方法作为对象内部的函数。
在C++中,有时使用方法来反映类的成员函数的概念。然而,最近我在《C++编程语言第四版》一书中发现了一个声明,第586页“派生类”
虚函数有时称为方法。
这有点令人困惑,但他说,有时,C++创建者倾向于将方法视为可以在对象上调用的函数,并且可以表现为多态。
简单的记忆方式:
作用→ 免费(免费意味着它可以在任何地方,不需要在对象或类中)方法→ 成员(对象或类的成员)