Python @staticmethod 和 @classmethod之间的区别,,使用@staticmet
Python @staticmethod 和 @classmethod之间的区别,,使用@staticmet
使用@staticmethod修饰的静态方法对它所在class一无所知,它只是接受调用的参数。没有隐式的第一参数。使用@staticmethod在python中基本上没用,和把方法放到module文件中没什么区别。
而用@classmethod修饰的是类方法。 这种方法的第一个参数是他所在的类。当你想使用工厂模式时会很有用。你可以传一个指定类的子类给类方法,然后返回子类的实例。
例如下面的DictSubclass从dict继承,当调用dict.dict.fromkeys()时fromkeys的第一个参数为dict,而在调用DictSubclass.fromkeys()时,fromkeys的第一个参数则为DictSubclass
如下代码:
class DictSubclass: def __repr__(self): return "DictSubclass"print dict.fromkeys("abc")print DictSubclass.fromkeys("abc")
将输出:
{'a': None, 'c': None, 'b': None}DictSubclass
第一行的输出是dict类调用输出的,而第二个调用则是DictSubclass输出的,后者重写了dict的__repr__方法
相关内容
- Python 数组分隔总结,python数组分隔,初学Python被它的数
- 在python中调用外部命令,python调用外部命令,在python中有
- Python内存调优,python调优,在python中可以使用
- 查询关键词在百度排名python脚本分享,python脚本,如下脚
- python 的IO文件操作总结,,在项目开发过程中,时常需
- Python如何查看变量占用空间大小,python变量占用空间
- error: 2006 MySQL server has gone away 解决方法,mysqlgone,今天在
- python使用正则表达式验证Email地址,pythonemail,下面的代
- 使用socket模块验证ip地址,socket模块验证ip,如下代码:
- python验证IP地址方法,python验证ip,可以使用socket模块
评论关闭