[英]instance methods invokation in python
对象是否有其方法或从 python 中的超类调用它们? 例如:
class tst():
def __init__(self,name,family):
self.name=name
self.family=family
def fun(self,a,b):
print(a+b)
newtst=tst("myname","my family")
tst.fun(newtst,3,5)
newtst.fun(3,5)
在上面的代码中, newtst
id(newtst.fun)
是否从tst
class 调用fun
function 或者它有自己的方法并直接运行它,如果后者是真的,为什么我们需要在定义中使用不同的 self 参数。来自id(tst.fun)
但我认为差异是因为在 memory 中创建新方法的 object。
实例方法在 python 中实现为描述符。 这意味着,单独的实例不会保留方法的单独副本,但是获取不同实例的相同属性可能会为每个实例产生单独的结果。
尽管除了我们拥有的所有实例的属性之外,我们还有相同的 function object ,但这仍然不意味着
id(tst.fun) == id(newtst.fun)
因为在调用 class 和 class 实例时,方法描述符给了我们不同的东西。
对于 class 我们将从tst
获得一个未绑定的方法,但对于newtst
它将绑定到一个实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.