实例方法的文档使我感到困惑,它将方法分为两种类型:一种是通过类的实例检索的,另一种是通过从类或实例中检索方法来创建的。
根据描述,
通过从类或实例中检索类方法对象来创建实例方法对象时,其
__self__
属性是类本身,其__func__
属性是类方法的基础函数对象
更复杂方法的__self__
属性是一个类。
有人能告诉我一个例子来说明这种情况吗?
答案 0 :(得分:2)
当你这样阅读时,声明可能听起来含糊不清。我会尝试将其分解。
通过检索类方法创建实例方法对象时 来自类或实例的对象......
class TestClass(object):
@classmethod
def test_method(cls):
return 1
其
__self__
属性是类本身及其__func__
属性 是类方法的基础功能对象。
所以如果我们有obj = TestClass()
那么
obj.test_method.__self__ == TestClass.test_method.__self__
和
obj.test_method.__func__ == TestClass.test_method.__func__
此语句特别是关于从类的类方法创建的实例方法。
我希望它更清楚。我已经为您创建了一个代码段here。