Python中self的理解

  1. 今天比较疑惑python中self的用法。参考了http://blog.csdn.net/lengyue_wy/article/details/6715185里面说:
    假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1,arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1,arg2)——这就是self的原理了。
  2. 于是我又参考了http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html
    并且改变了其中的例程进行理解。
  3. 例程1
class Human(object):
    laugh = 'hahahaha'
    def show_laugh(self):
        #self.laugh="hihihihihi"        
        print self.laugh
    def laugh_100th(self):
        for i in range(100):
            self.show_laugh()

li_lei = Human()          
li_lei.show_laugh()
print Human.laugh

输出为

hahahaha
hahahaha

li_lei.show_laugh()等效于Humen.show_laugh(li_lei)
带入后有

 def show_laugh(li_lei):    
        print li_lei.laugh

说明实例属性在没定义的时候和类属性是一样的,即实例属性继承了类属性。

5 例程2

class Human(object):
    laugh = 'hahahaha'
    def show_laugh(self):
        self.laugh="hihihihihi"        
        print self.laugh
    def laugh_100th(self):
        for i in range(100):
            self.show_laugh()

li_lei = Human()          
li_lei.show_laugh()
print Human.laugh

输出为

hihihihihi
hahahaha

说明实例属性在自定义之后和类属性是不同的,并且实例属性的自定义并不会改变类属性。

  • 总之一点,self在可以假想为在后面定义的某个实实在在的实例对象,也相当于我先定义一个预先在这里放着,以后要用的时候你再带入就好了。
  • 实例对象在其属性没有定义的时候采用的是类属性的值,当一旦定义了自己的属性就不再用类属性,并且定义自己的属性并不会改变类属性。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值