这个问题在这里已经有了答案:
Difference between methods and functions, in Python compared to C++
(6 个回答)
4年前关闭。
我正在寻求确认我的想法在 Python 方法与函数方面是否正确:
方法是类的一部分。
函数是在类之外定义的。
所以例如
class FooBar(object):
def __init__(self):
pass
def foo(self):
pass
def bar():
pass
if __name__ == '__main__':
fb = FooBar()
我明白
def foo
定义方法和 def bar
定义功能。我对么?
最佳答案
是的。需要明确的是,方法是函数,它们只是附加到类,当从实例调用该函数时,它会自动将该实例作为第一个参数隐式传递*。实际上,在何处定义该函数并不重要。考虑:
class FooBar:
def __init__(self, n):
self.n = n
def foo(self):
return '|'.join(self.n*['foo'])
fb = FooBar(2)
print(fb.foo())
def bar(self):
return '*'.join(self.n*['bar'])
print(bar(fb))
FooBar.bar = bar
print(fb.bar())
*我强烈建议阅读 descriptor HOWTO .剧透警告,Functions are descriptors .这就是 Python 神奇地将实例传递给方法的方式(也就是说,所有函数对象都是描述符,当被类上的实例访问时,
__get__
方法将实例作为第一个参数传递给函数本身!。HOWTO 显示了 Python 实现所有这些,包括如何在纯 Python 中实现 property
!
关于Python 方法与函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46636190/