|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
没有静态方法
- class C:
- def func():
- print("I love FishC")
-
- C.func()
- I love FishC
复制代码
有静态方法
- class C:
- @staticmethod
- def func():
- print("I love FishC")
-
- C.func()
- I love FishC
复制代码
无论有没有静态方法,类都可以直接访问其方法,静态方法是起什么作用的
本帖最后由 isdkz 于 2023-8-30 10:40 编辑
(, 下载次数: 0)
从这张图中我们可以看到,普通函数的类型为 function
默认定义的方法(不加任何修饰器)为实例方法
实例方法只有在通过实例去调用的时候类型才为 bound method,而其它情况下为 function
Bound method 可以说是 python 本身对函数(function)的一个封装
它会自动帮你把所属对象(包括类对象和实例对象)作为第一个参数传入,所属对象即 of 后面尖括号内包含的内容,bound method 的特殊之处除此之外无他,
如代码中,实例方法 test_im 会将
(, 下载次数: 0)
作为第一参数自动传入。
(, 下载次数: 0)
通过 classmethod 修饰的方法将会成为类方法,类方法不管是通过类还是通过实例调用,该方法类型都为 bound method,只不过此 bound method 非彼 bound method,
通过我的第一张图你可以看出来,它属于类对象,而不是实例对象
(, 下载次数: 0)
(, 下载次数: 0)
不管是通过类还是实例来去调用,它都自动传入了类对象
(, 下载次数: 0)
通过 staticmethod 修饰的方法则是不管何时何地它都只会是 function,
function 就跟一个普普通通的函数一样的职能,也就是说它并不会自动传入任何参数
(, 下载次数: 0)
|
|