一、类三种方法
1、实例方法:写在类里面,比如
def __init__(self, url): def instance(self):
带有self标志。应用:给类实例使用,需要实例化。可以调用静态方式
2、类方法:需要classmethod装饰,比如
@classmethod
def func_for_class(cls)
cls相当于类名Obj 。 应用:给类使用,不需要实例化
1、可以调用实例方法instance,但是第一个参数为类的实例
cls.instance(Obj("instance"))或者Obj.instance(Obj("instance"))
2、可以调用公共变量。但是不可以调用self.url。url是实例用的变量。
cls.is_running或者Obj.is_running
3、可以调用静态方法
cls.func_disassocition_class()或者Obj.func_disassocition_class()
3、静态方法:需要staticmethod装饰,比如
@staticmethod
def func_disassocition_class():
与类没有任何关系,函数里面不能调用类的任何变量,比如is_running,self.url
类外函数调用唯一方式:Obj.func_disassocition_class()
二、学习代码
class Obj(object):
#实例方法instance可以使用、类方法func_for_class也可以使用。静态方法func_disassocition_class不能使用
is_running=True
def __init__(self, url):
self.url = url
#给实例(object)用的方法
def instance(self):
print("url is %s" % self.url)
print( "instance() can use is_running=%s" % self.is_running)
#给类(class)使用的方法,可以调用实例方法instance、静态方法func_disassocition_class、公共变量is_running
@classmethod
def func_for_class(cls):
#cls相当于类名
print("func_for_class() can use is_running=%s" % cls.is_running)
print(Obj.is_running)
#可以调用,实例方法,静态方法
cls.func_disassocition_class()
cls.instance(Obj("instance"))
#与类没有半毛钱关系
@staticmethod
def func_disassocition_class():
Obj.other_func_disassocition_class()
print("this is func_disassocition_class")
#与类没有半毛钱关系
@staticmethod
def other_func_disassocition_class():
print("this is other_func_disassocition_class")
if __name__ == "__main__":
obj = Obj("https://bbs.csdn.net")
obj.instance()
Obj.func_for_class()
Obj.func_disassocition_class()
结果显示:
url is https://bbs.csdn.net
instance() can use is_running=True
func_for_class() can use is_running=True
True
this is other_func_disassocition_class
this is func_disassocit