Python classmethod 修饰符
程序员文章站
2022-07-02 12:58:21
描述 classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。 语法 classmethod 语法: 参数 无。 返回值 返回函数的类方法。 实例 以下实例展示了 classmethod ......
描述
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
语法
classmethod 语法:
classmethod
参数
- 无。
返回值
返回函数的类方法。
实例
以下实例展示了 classmethod 的使用方法:
# !/usr/bin/python # -*- coding: utf-8 -*- 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
上面是例1,下面是例2
class a(object): # 属性默认为类属性(可以给直接被类本身调用) num = "类属性" # 实例化方法(必须实例化类之后才能被调用) def func1(self): # self : 表示实例化类后的地址id print("func1") print(self) # 类方法(不需要实例化类就可以被类本身调用) @classmethod def func2(cls): # cls : 表示没用被实例化的类本身 print("func2") print(cls) print(cls.num) cls().func1() # 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准) def func3(): print("func3") print(a.num) # 属性是可以直接用类本身调用的 # a.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的 a.func2() a.func3()
结果:
func2 <class '__main__.a'> 类属性 func1 <__main__.a object at 0x000001d820f99978> func3 类属性
当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到。
上一篇: php日期格式化方法详解
下一篇: 06.前端之BootStrap