类方法和静态方法
class Person(object):
__slots__ = ("name","age")
# 类属性
num = 0
# 构造函数
def __init__(self,name,age):
# 实例属性
self.name = name
self.age = age
# 实例函数:形参列表的第一个参数必须为self,表示当前对象
def show(self):
print("show",self)
# 类函数:形参列表的第一个参数为cls,表示当前类
# 使用@classmethod装饰器修饰一个函数,该函数被称为类函数
# cls和self类似,都不是关键字,可以是任意的标识符
@classmethod
def func1(cls):
print("func11", cls)
# cls就相当于是当前类Person,所以可以通过cls创建对象
c = cls("bbb",6)
# 在类函数中调用实例 函数,必须先通过cls创建对象,然后再调用
# c.show()
# 静态函数
@staticmethod
def func2():
print("func~~2222")
p = Person("aaa",5)
# 实例函数只能通过对象调用
p.show()
# 类函数可以通过类名或者对象调用
p.func1()
Person.func1()
# 静态函数可以通过类名或者对象调用
p.func2()
Person.func2()
'''
show <__main__.Person object at 0x000002C03C531518>
func11 <class '__main__.Person'>
func11 <class '__main__.Person'>
func~~2222
func~~2222
'''
# 如果需要在函数中创建当前类的对象,则选用类函数
# 如果需要封装一个工具类,建议使用类函数或者静态函数