What is an “instance method”?
从http:/ / / / / datamodel.html docs.python.org 3.3参考
Instance methods
An instance method object combines a class, a class instance and any
callable object (normally a user-de?ned function).
如果它是一个定义,你能解释一下是什么算法?
如果它不是一个定义,什么是"国家法"的定义?
是"国家法"的概念,相同的A方法A类?
因为有人带上绑定静态方法和类方法,法与宗教法,让我澄清:i。a method of a class可以在普通法中,A类的方法,或一个静态方法。i a方法。A类或类的实例的访问通过它可以绑定或功能。我从来没有听说过"实例法"。我不知道它甚至后看的比,如果它是确定的和不相关的一类方法,普通法,或一个静态方法,或结合的方法或函数。我希望你明白我的混乱。
谢谢。
- 你到底在问什么?它给出了一个定义,什么是"类的方法的相同概念"?
- 好像你知道。那么你能解释一下"组合"是如何定义的吗?
- 我想我不明白"组合"这个词是如何定义的。它基本上是一个常规的方法——方法与实例相关联。它是为了将它与与类关联的类方法区分开来。在大多数OO语言中广泛使用的术语。
- "方法与实例关联"是什么意思?我只知道所有方法都是Python中类的属性。
- 如果您熟悉旧的术语,这可能会有所帮助-stackoverflow.com/questions/11949808/…
- 您提供的链接中的绑定和未绑定方法如何与实例方法相关?
- 如果你读到这个问题的答案,它会说python3没有未绑定的函数
- 方法是基于(在其他语言中是隐式的,在python-explicit中)第一个参数(右)进行调度的。该参数(self)是实例方法中类的实例。因此,实例方法(与将类作为其参数的类方法不同)。
- 实例方法的定义与另一个问题中的绑定方法同义。
- 可能部分混淆源于这样一个事实:文档中引用的位描述了Python用于表示实例方法的实际对象,这是一个具体的对象,而不是像"实例方法"这样的抽象。
1 2 3 4 5 6 7
| >>> class Foo:
... def im_a_method(self):
... pass
...
>>> x = Foo()
>>> x.im_a_method
<bound method Foo.im_a_method of <__main__.Foo object at 0x7f4f1993dd30>> |
塔达!这是一个实例方法对象。它是在调用对象之前,当您检索对象的方法时得到的。
- 谢谢。我想知道这个定义。
- @蒂姆,你把定义复制到问题里了,不是吗?
- @板球007如果你相信这是一个定义,你能解释一下它是什么意思吗?
- @tim您创建一个类对象的实例,它有一些定义的方法,因此这些方法就是实例方法。不要与类方法混淆
- @蒂姆:我想你可以休息一下,从你读过的所有书籍和说明书中,写一些程序,这对你很有帮助。在实践中,你似乎总是对事物的工作方式非常陌生,而且你似乎很难理解你所阅读的信息是如何结合在一起的。写一些代码可以帮助解决这个问题。
- 恰恰相反。在阅读书籍和说明书之前,我写了一些代码。现在是时候读一下书和说明书,真正理解我在做什么了。
- 也就是说,我发布的内容和实例方法对象的定义差不多。当然可以给出更多的描述,或者向您展示实现,但是定义呢?这些东西不像迭代器或Abelian组;您不需要检查某个东西是否是实例方法对象,方法是浏览一系列属性并查看它是否满足这些属性。这就像是在问"福特焦点"的定义——这是一个很奇怪的问题,并不是所有有用的。
- 是的,请详细描述。
- @蒂姆:继续读你已经读过的那页。有一整屏的描述。(继续阅读你已经读过的那一页,对于你的许多问题是个很好的建议。)
- 如果继续阅读能有所帮助,我就不会问了。
什么是实例方法?
实例方法是绑定到类实例的函数。类的实例作为第一个参数隐式传递给实例方法。它本质上属于那个特定的实例。实例方法是人们使用的"普通"方法类型。这与分别使用staticmethod和classmethod创建的静态方法或类方法相反。
下面是一个实例方法的示例:
1 2 3 4 5 6
| >>> class Class:
... def method(self):
... pass
>>> Class.method
<bound method Class.method of <Class object at 0x7f12781c5b70>> |
就这么简单。
- 谢谢。你能证明你所解释的和"一个实例方法对象结合了一个类、一个类实例和任何可调用对象(通常是一个用户de)一样吗?Ned函数)"?什么方法不是实例方法?
- 类方法不是实例方法。静态的方法不是实例方法。
- @好吧,但你说什么?我说"通常"不是"总是"。
- @克里斯蒂安,我在评论中的海报上回答了这个问题。什么方法不是实例方法?
- 好吧,抱歉@pvg。我没看见。投反对票的人能解释一下原因吗?我的措辞含糊不清,是我的事实不正确。
- 这里是投票者!我认为这个答案有点含糊不清,特别是"一个类内定义的函数",我认为这实际上与海报的混乱有关(很难说,问题是含糊不清的)。但是,在声明、一般对象的实例、类的实例、类对象的实例,甚至可能是文档提到的方法对象的实例之间,需要更清晰的区分。
- @pvg:我知道类的方法可以是普通方法、类方法或静态方法。我从来没有听说过"实例方法"。我不知道这是在看了报价之后。希望你能理解我的困惑。
- "实例方法"是您所描述的"普通方法"。就这些了。之所以这样叫是因为从某种意义上说,它"属于"一个类的特定实例。它是许多OO语言中广泛使用的术语,您以前从未遇到过。
- @从某种意义上讲,你所说的"它"属于某个类的特定实例是什么意思?方法始终是类的属性,因此它属于类,而不是它的实例。
- @好的,谢谢你的反馈。我修改了我的答案,因为我基本上同意你的一些观点。它看起来如何知道?
你的困惑来自于这个定义到底是关于什么的。"实例方法"一词实际上用于描述概念(一种在实例上工作的方法——通过与类方法或静态方法的对立)及其技术实现。您引用的定义是关于技术实现的。
如果您想了解这个定义的上下文,可以在python wiki中阅读这篇文章,它解释了python如何在运行时将函数转换为方法。