来自 3. Data model:
示例方法
示例方法对象结合了一个类、一个类示例和任何可调用对象(通常是用户定义的函数)。
如果这是一个定义,它意味着什么?
如果不是定义,那么“示例方法”的定义是什么?
“示例方法”与类的方法概念相同吗?
既然有人提出了类方法和静态方法、绑定方法和未绑定方法,让我澄清一下:
我理解类的方法可以是普通方法、类方法或静态方法。我理解通过类或其示例访问的类的方法可以是绑定或函数。我从未听说过“示例方法”。即使看了引号我也不知道它是什么,也不确定它是否与普通方法、类方法或静态方法有关。、或绑定方法或函数。
4条答案
按热度按时间y53ybaqx1#
这是一个示例方法对象。它是你在调用一个对象的方法之前,检索它时得到的东西。
vc9ivgsu2#
示例方法**是一个绑定到类示例的函数。类的示例作为第一个参数隐式传递给示例方法。它本质上属于该特定示例。示例方法是人们使用的“普通”类型的方法。这与分别使用
staticmethod
和classmethod
创建的静态方法或类方法相反。下面是一个示例方法的示例:
就这么简单。
czfnxgou3#
你的困惑来自于这个定义到底是关于什么的。术语“示例方法”实际上是用来描述概念(一种在示例上工作的方法--与类方法或静态方法相对)及其技术实现。你引用的定义是关于技术实现的。
如果你想了解这个定义的上下文,你可以阅读this article in the Python wiki,它解释了Python如何在运行时将函数转换为方法。
v2g6jxz64#
示例方法:
self
变成了普通参数,它不具有调用示例和类变量以及示例、类和静态方法的能力。self
做为第一个参数,否则对象无法呼叫执行严修方法,但执行严修方法仍可以直接由类别名称呼叫,而且名称self
是用于惯例中,因此self
以外的其他名称仍可以使用。例如,执行严修方法可以透过对象呼叫执行严修和类别变数,以及执行严修、类别和静态方法,如下所示:
输出量:
而且,示例方法也可以直接通过类名调用,但当直接通过类名调用时,我们需要向示例方法传递一个参数,因为
self
成为普通参数,它不具有调用示例和类变量以及示例、类和静态方法的能力,如下所示:输出量:
并且,如果调用示例和类变量以及示例、类和静态方法,如下所示:
出现以下错误的原因是,
self
再次成为常规参数,该参数无法调用示例和类变量以及示例、类和静态方法:属性错误:“string”对象没有属性“name”
属性错误:“str”对象没有属性“x”
属性错误:“str”对象没有属性“test 2”
属性错误:“str”对象没有属性“test 3”
属性错误:“str”对象没有属性“test 4”
并且,如果一个参数未传递给示例方法,如下所示:
出现以下错误:
TypeError:test1()缺少1个必需的位置参数:'自我'
而且,示例方法需要
self
作为第一个参数,否则示例方法不能被对象调用,如下所示:然后,出现以下错误:
TypeError:test1()接受0个位置参数,但提供了1个
但是,仍然可以通过类名直接调用示例方法,如下所示:
输出量:
而且,
self
的名称在示例方法中按约定使用,因此其他名称(而不是self
)仍然有效,如下所示:输出量: