|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ~风介~ 于 2016-1-4 16:22 编辑
首先,定义一个Pizza类:
- class Pizza(object):
- def cook(self):
- return 0
复制代码
我们可以得到:
- #cook是一个方法。
- >>> Pizza.cook
- <function Pizza.cook at 0x029A10C0>
- #要调用cook方法必须实例化Pizza类。
- >>> Pizza.cook()
- Traceback (most recent call last):
- File "<pyshell#5>", line 1, in <module>
- Pizza.cook()
- TypeError: cook() missing 1 required positional argument: 'self'
- >>> Pizza().cook()
- 0
- #不同的实例化不相同
- >>> Pizza() is Pizza()
- False
- #cook方法依赖于类的实例
- >>> Pizza().cook is Pizza().cook
- False
- >>>
复制代码
然后,定义一个静态方法:
- class Pizza(object):
- @staticmethod
- def cook():#不需要传入参数
- return 0;
复制代码
我们可以得到:
- #静态方法也是方法的一种
- >>> Pizza.cook
- <function Pizza.cook at 0x02B310C0>
- #调用静态方法cook不需要实例化Pizza类。
- >>> Pizza.cook()
- 0
- #不同的实例化不相同
- >>> Pizza() is Pizza()
- False
- #不同实例的cook方法相同,实例与类的cook方法相同 ——> 静态方法cook不需要依赖于类的实例。
- #静态方法即可以被类调用,同样类的实例也可以调用,只是这样会耗用更多的资源而已(不专业)。
- >>> Pizza().cook is Pizza().cook
- True
- >>> Pizza().cook is Pizza.cook
- True
- >>>
复制代码
可得结论:
类的方法在使用时,必须实例化类;而静态方法不需要依赖于类的实例化。Python 可以直接使用静态方法,而避免了去实例化一个对象。实例化对象需要消耗资源的,静态方法避免了这一切。
扩展阅读:函数加括号与否区别
|
评分
-
参与人数 2 | 荣誉 +6 |
鱼币 +6 |
贡献 +3 |
收起
理由
|
宋桓公
| + 1 |
+ 1 |
|
版主威武~~!!! |
拈花小仙
| + 5 |
+ 5 |
+ 3 |
感谢楼主无私奉献! |
查看全部评分
|