【发布时间】:2016-11-29 03:01:48
【问题描述】:
根据 Python 2.7.12 文档,User-defined methods:
获取属性时可能会创建用户定义的方法对象 类的(可能通过该类的实例),如果该属性 是一个用户定义的函数对象,一个未绑定的用户定义的方法 对象,或类方法对象。当属性是 用户定义的方法对象,一个新的方法对象只有在 从中检索它的类与或派生类相同 class of,存储在原始方法对象中的类;否则, 原始方法对象按原样使用。
我知道 Python 中的一切都是对象,因此“用户定义的方法”必须与“用户定义的方法对象”相同。但是,我不明白为什么会有“用户定义的函数对象属性”。比如说,在下面的代码中:
class Foo(object):
def meth(self):
pass
meth 是在类体内定义的函数,因此是method。那么为什么我们可以有一个“用户定义的函数对象属性”呢?不是所有的属性都定义在一个类体内吗?
Bouns 问题:提供一些示例,说明如何通过获取类的属性创建用户定义的方法对象。对象不是在它们的类定义中定义吗? (我知道方法可以分配给一个类实例,但那是猴子补丁。)
我寻求帮助是因为这部分文档对我这个只懂 C 的程序员来说真的很困惑,因为 Python 是一种神奇的语言,它既支持函数式编程又支持面向对象的程序员,而我没有'还没有掌握。我已经做了很多搜索,但仍然无法弄清楚。
【问题讨论】:
-
感谢您提出这个问题,花了一个小时来理解这个问题
标签: python oop methods language-lawyer terminology