您的位置:首页 > 编程语言 > Python开发

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

2016-04-22 23:35 411 查看
个人理解,若有误,望指正,多谢!实例方法(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
'''

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: