小编old*_*ile的帖子

对 Python 教程文档中一段内容的澄清

我不清楚 python 教程文档中的这一段落在说什么。

\n\n

(在这里找到:https://docs.python.org/3/tutorial/classes.html#method-objects

\n\n
\n

当引用的实例属性不是数据属性时,将搜索其类。如果名称表示有效的类属性是函数对象,则通过将实例对象和刚刚找到的函数对象打包(指向)在一个抽象对象中来创建方法对象:这就是方法对象。当使用参数列表调用方法对象时,会根据实例对象和参数列表构造一个新的参数列表,并使用该新参数列表调用函数对象。

\n
\n\n

根据我目前的理解,我认为它的意思是,每当您引用类实例的属性时,就像这个小片段的第 8 行所示:

\n\n
class MyClass():\n    attribute = "I am an attribute"\n\n    def func(self):\n        return "I am a function"\n\ninstance = MyClass()\nprint(instance.func())\n
Run Code Online (Sandbox Code Playgroud)\n\n

当蟒蛇看到

\n\n
instance.func()\n
Run Code Online (Sandbox Code Playgroud)\n\n

它真正做的不是寻找func“拥有”的方法instance,而是寻找func拥有的函数MyClass,然后调用拥有的函数MyClass作为instance参数self

\n\n

所以基本上它与以下内容相同:

\n\n
MyClass.func(instance)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我觉得我错过了一些微妙的东西。我不明白这是什么意思

\n\n
\n

...方法对象是通过将实例对象和刚刚找到的函数对象打包(指向)在一个抽象对象中而创建的:这就是方法对象。

\n
\n\n

什么是抽象对象?

\n\n

“打包”指针是什么意思?

\n\n

“打包”多个指针是什么意思?

\n\n

instance如果 python 只是要查看MyClass\ 的函数对象,为什么还要有一个方法对象呢?

\n\n

为什么 python …

python python-2.7 python-3.x

5
推荐指数
1
解决办法
74
查看次数

标签 统计

python ×1

python-2.7 ×1

python-3.x ×1