实例方法:
最普遍的一种方法:
直接看栗子:
class A(object):
def __init__(self, data):
self.data = data
def out(self):
print(self.data)
a1 = A('first')
a2 = A('second')
a1.out()
a2.out()
结果:
frist
second
上诉方法就是实例方法,当调用a1时,初始化将a1传入 A类中的初始化类self,实例a1会传递给self参数,这样self参数就可以引用当前正在调用实例方法的实例。
最重要的:
实例方法只能被实例调用!!!
就是上述中的a1、a2!!!!!
=
=
类方法
python中的类方法需要使用@classmethod
修饰符
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls参数,可以来调用类的属性,类的方法,实例化对象等
class A(object):
bar = 1
def func1(self):
print ('foo')
@classmethod
def func2(cls):
print ('func2')
print (cls.bar)
cls().func1() # 调用 foo 方法
A.func2() # 不需要实例化
结果:
func2
1
foo
直接使用类调用类方法func2,cls代表func2类方法本身
重点:类方法可以被实例调用,也可以被类调用!!!!
=
=
静态方法
python中使用@staticmethod
来定义静态方法
在开发中,我们常常需要定义一些方法,这些方法跟类有关,但在实现时并不需要引用类或者实例,例如,设置环境变量,修改另一个类的变量,等。这个时候,我们可以使用静态方法。
实例:
class C(object):
@staticmethod
def f():
print('runoob');
C.f(); # 静态方法无需实例化
cobj = C()
cobj.f() # 也可以实例化后调用
结果:
runoob
runoob
静态方法和类方法调用时一样
重点:静态方法可以被实例调用,也可以被类调用!!!!