繁体   English   中英

python 中的实例方法调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM