>>> class Ancestor( object ): def __init__( self ): self.name = "Ancestor" def getname( self ): return self.name>>> class Base1( Ancestor ): def __init__( self ): self.name = "Base1" super( Base1,self ).__init__( ) def getname( self ): return self.name>>> class Base2( Base1 ): def __init__( self ): self.name = "Base2" super( Base2,self ).__init__( ) def getname( self ): return self.name def getB1name( self ): return super( Base2,self ).getname( )>>> b2 = Base2( )>>> b2.getname( )'Ancestor'>>> b2.getB1name( )'Ancestor'
我无法理解结果.我期待b2.getname()的结果为“Base2”,b2.getB1name()的结果为“Base1”
解决方法 self指的是实例,而不是类.您只有一个实例,因此self的所有用法都指向同一个对象.在Base2 .__ init__中,您在此对象上设置了一个名称.然后调用super,它调用Base1 .__ init__,它在同一个对象上设置一个新名称,覆盖旧的名称.如果你真的需要,你可以使用double-underscore attributes来实现你想要的.
总结以上是内存溢出为你收集整理的Python中的“Self”对象是什么?全部内容,希望文章能够帮你解决Python中的“Self”对象是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)