在Python 3中(与Python 2不同),从类访问和调用的函数只是另一个函数。没什么特别的:
请注意,每次从实例检索属性时,都会发生从函数对象到实例方法对象的 转换 。
[ 重点矿 ]
您只是偶然通过正确的参数集调用该函数,尽管可以通过类对象进行访问。与通过实例为方法调用基础函数对象相同:
TestClass().test.__func__() # "Hey test"
快速测试进一步说明了这一点:
print(TestClass().test is TestClass.test)# Falseprint(TestClass().test.__func__ is TestClass.test)# True
但是,在Python 2中,行为是不同的,因为当通过类或实例访问属性时,都会发生从函数对象到方法对象的转换:
请注意,每次从类或实例检索属性时,都会发生从函数对象到(未绑定或绑定)方法对象的 转换 。
[ 重点矿 ]



