class Foo:
def bar(self):
print('bar')
obj = Foo()
obj.bar()
# obj = Foo()
# Foo.bar(obj)
方法:
普通方法:保存在类中,由对象来调用(上面代码中两个方法都可以,但是不管是用对象调用还是用类调用,都要首先定义一个对象,而且一般都用第一种方法调用),self参数是对象。
静态方法:保存在类中,由类直接调用,并且不用self参数
类方法:保存在类中,由类直接调用,cls参数是当前类
class Foo:
def bar(self):
print('bar')
# 加装饰器装饰后,变成静态方法,self就不是必须的了
@staticmethod
def sta():
print('123')
@staticmethod
def stat(a1, a2):
print(a1, a2)
Foo.sta() # 123
Foo.stat(1, 2) # 1 2
class Foo:
def bar(self):
# self是对象
print('bar')
# 加装饰器装饰后,变成静态方法,self就不是必须的了
@staticmethod
def sta():
print('123')
@staticmethod
def stat(a1, a2):
print(a1, a2)
@staticmethod
def classmd(cls):
# cls是类名,不依赖对象
print(cls)
print('classmd')
Foo.classmd(Foo)
# <class '__main__.Foo'>
# classmd
应用场景:
如果对象中需要保存一些值,执行某功能时需要使用对象中的值,用普通方法。
不需要任何对象中的值时,用静态方法。(类方法没有太大的用处,它的功能可以通过静态方法实现)