python中的实例方法、静态方法、类方法、类变量和实例变量

个人理解,若有误,望指正,多谢!

实例方法(obj_func)和实例变量(var)需要绑定到实例,实例方法可以调用实例变量、类变量和实例方法、静态方法、类方法

静态方法:静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。使用装饰器@staticmethod定义静态方法。类对象和实例对象都可以调用静态方法。但是静态方法不能调用任何对象。

类方法是将类本身作为对象进行操作的方法。类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls。类对象和实例都可以调用类方法、静态方法

class MyClass():
    cvar=12
    def __init__(self):
        self.var=self.stafunc()
    def obj_func(self):
        print "I'm a obj func"
        print self.var,self.cvar
        self.classfunc()
        self.stafunc()
    @staticmethod
    def stafunc():
        print "I'm a static func"
        return 2
    @classmethod
    def classfunc(cls):
        print "class var:%d"%cls.cvar
        cls.stafunc()
        #cls.obj_func() unbound method obj_func() must be called with MyClass instance as first argument (got nothing instead)

myobj=MyClass()
print myobj.var
myobj.obj_func()
myobj.stafunc()
myobj.classfunc()
print myobj.cvar
print MyClass.cvar
MyClass.stafunc()
MyClass.classfunc()
#print MyClass.var AttributeError: class MyClass has no attribute 'var'
#MyClass.obj_func() unbound method obj_func() must be called with MyClass instance as first argument (got nothing instead)
'''
I'm a static func
2
I'm a obj func
2 12
class var:12
I'm a static func
I'm a static func
I'm a static func
class var:12
I'm a static func
12
12
I'm a static func
class var:12
I'm a static func
'''

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值